diff --git a/CMakeLists.txt b/CMakeLists.txt index 685dbb02d5..246b47a475 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,8 @@ endif() set(DEFAULT_CPU_TARGET "native") +add_compile_definitions("JSC_OBJC_API_ENABLED=0") + if (ARCH STREQUAL "x86_64") if (NOT MSVC) if (USE_BASELINE_BUILD) @@ -46,7 +48,7 @@ option(USE_CUSTOM_CARES "Use Bun's recommended version of c-ares" ON) option(USE_CUSTOM_BASE64 "Use Bun's recommended version of libbase64" ON) option(USE_CUSTOM_LOLHTML "Use Bun's recommended version of lolhtml" ON) option(USE_CUSTOM_TINYCC "Use Bun's recommended version of tinycc" ON) -option(USE_CUSTOM_LIBUV "Use Bun's recommended version of libuv (Windows only)" ON) +option(USE_CUSTOM_LIBUV "Use Bun's recommended version of libuv (Windows only)" OFF) option(USE_BASELINE_BUILD "Build Bun for older CPUs" OFF) set(ZIG_EXECUTABLE "${DEFAULT_ZIG_EXECUTABLE}" CACHE STRING "Path to zig executable") @@ -70,25 +72,13 @@ if(UNIX AND NOT APPLE) set(LINUX ON) endif() -include_directories(packages/bun-uws) -include_directories(packages) -include_directories(packages/bun-usockets) -include_directories(packages/bun-usockets/src) -include_directories(src/bun.js/bindings) -include_directories(src/bun.js/bindings/WebCore) -include_directories(src/bun.js/bindings/webcrypto) -include_directories(src/bun.js/bindings/sqlite) -include_directories(src/bun.js/modules) -include_directories(${WEBKIT_INCLUDE_DIR}) -include_directories(src/js/out) -include_directories(src/js/out/modules) -include_directories(src/js/builtins) -include_directories(src/napi) -include_directories(src/deps) -include_directories(src/deps/picohttpparser) add_compile_definitions("BUILDING_JSCONLY__") + + +add_definitions(-D_HAS_EXCEPTIONS=0) + find_program(CCACHE_PROGRAM ccache) if(CCACHE_PROGRAM) set(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_PROGRAM}") @@ -109,7 +99,34 @@ file(GLOB BunCpp_SRC "src/deps/picohttpparser/picohttpparser.c" ) -add_library(BunCpp STATIC ${BunCpp_SRC}) +add_library(BunCpp STATIC ${BunCpp_SRC} ${uSockets_FILES}) + +set_target_properties(BunCpp PROPERTIES + CXX_STANDARD 20 + CXX_STANDARD_REQUIRED YES + CXX_EXTENSIONS YES + CXX_VISIBILITY_PRESET hidden + VISIBILITY_INLINES_HIDDEN YES +) + +include_directories( + packages/bun-uws + packages + packages/bun-usockets + packages/bun-usockets/src + src/bun.js/bindings + src/bun.js/bindings/webcore + src/bun.js/bindings/webcrypto + src/bun.js/bindings/sqlite + src/bun.js/modules + src/js/out + src/js/out/modules + src/js/builtins + src/napi + src/deps + src/deps/picohttpparser +) + add_compile_definitions( "STATICALLY_LINKED_WITH_JavaScriptCore=1" @@ -137,14 +154,28 @@ endif() set(BUN_OBJECT_FILE zig-out/lib/bun.o) if (CMAKE_BUILD_TYPE STREQUAL "Debug") set(BUN_OBJECT_FILE zig-out/lib/bun-debug.o) - string(APPEND CMAKE_CXX_FLAGS " -g3 -O1") + if (NOT MSVC) + string(APPEND CMAKE_CXX_FLAGS " -g3 -O1") + string(APPEND CMAKE_C_FLAGS " -g3 -O1") + else() + string(APPEND CMAKE_CXX_FLAGS " /O1 ") + string(APPEND CMAKE_C_FLAGS " /O1 ") + endif() add_compile_definitions("BUN_DEBUG") elseif (NOT MSVC) string(APPEND CMAKE_CXX_FLAGS " -O3 -femit-llvm " ) string(APPEND CMAKE_C_FLAGS " -O3 -femit-llvm ") else () - string(APPEND CMAKE_CXX_FLAGS " -O3 " ) - string(APPEND CMAKE_C_FLAGS " -O3 ") + string(APPEND CMAKE_CXX_FLAGS " /O2 " ) + string(APPEND CMAKE_C_FLAGS " /O2 ") +endif() + +if (WIN32) + string(APPEND BunCpp_SRC "src/bindings/musl-memmem.c") + add_compile_definitions("WIN32") + add_compile_definitions("_WINDOWS") + add_compile_definitions("_CRT_SECURE_NO_WARNINGS") + add_compile_definitions("WIN32_LEAN_AND_MEAN=1") endif() # if clang @@ -162,6 +193,10 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") "-fvisibility=hidden " "-fvisibility-inlines-hidden " ) +elseif(MSVC) + string(APPEND CMAKE_CXX_FLAGS " /EHsc /GR- ") + string(APPEND CMAKE_C_FLAGS " /EHsc /GR- ") + string(APPEND CMAKE_CXX_FLAGS " /Zc:__cplusplus /Zc:inline /bigobj ") endif() @@ -178,8 +213,8 @@ if (NOT MSVC) string(APPEND CMAKE_CXX_FLAGS " -march=${CPU_TARGET} -mtune=${CPU_TARGET} ") string(APPEND CMAKE_C_FLAGS " -march=${CPU_TARGET} -mtune=${CPU_TARGET} ") else() - string(APPEND CMAKE_CXX_FLAGS " /arch:${CPU_TARGET} ") - string(APPEND CMAKE_C_FLAGS " /arch:${CPU_TARGET} ") + # string(APPEND CMAKE_CXX_FLAGS " /arch:x64 ") + # string(APPEND CMAKE_C_FLAGS " /arch:x64 ") endif() file(GLOB ZIG_FILES @@ -221,7 +256,6 @@ file(GLOB uSockets_FILES "packages/bun-usockets/src/crypto/*.cpp" ) -add_library(uSockets STATIC ${uSockets_FILES}) add_compile_definitions( "LIBUS_USE_OPENSSL=1" "UWS_HTTPRESPONSE_NO_WRITEMARK=1" @@ -230,6 +264,15 @@ add_compile_definitions( ) add_executable(bun ${BUN_OBJECT_FILE}) + +set_target_properties(bun PROPERTIES + CXX_STANDARD 20 + CXX_STANDARD_REQUIRED YES + CXX_EXTENSIONS YES + CXX_VISIBILITY_PRESET hidden + VISIBILITY_INLINES_HIDDEN YES +) + target_link_libraries(bun PRIVATE BunCpp) set(CMAKE_COLOR_DIAGNOSTICS ON) @@ -276,12 +319,9 @@ elseif (LINUX) endif() -if (USE_CUSTOM_ZLIB) - if (WIN32) - target_link_libraries(bun PRIVATE "${BUN_LIB_DIR}/zlib.lib") - else() - target_link_libraries(bun PRIVATE "${BUN_LIB_DIR}/libz.a") - endif() +if (USE_CUSTOM_ZLIB AND (NOT WIN32)) + target_link_libraries(bun PRIVATE "${BUN_LIB_DIR}/libz.a") + include_directories(${BUN_DEPS_DIR}/zlib/include) else () find_package(ZLIB REQUIRED) target_link_libraries(bun PRIVATE ZLIB::ZLIB) @@ -390,9 +430,11 @@ if (WIN32) if (USE_CUSTOM_LIBUV) target_link_libraries(bun PRIVATE "${BUN_LIB_DIR}/uv.lib") else () - find_package(libuv REQUIRED) - target_link_libraries(bun PRIVATE libuv::libuv) + find_package(libuv CONFIG REQUIRED ) + target_link_libraries(BunCpp PRIVATE STATIC $,libuv::uv_a,libuv::uv>) endif() + + include_directories(C:\\Users\\windo\\Build\\libicu\\include) endif() if (USE_STATIC_SQLITE) @@ -405,15 +447,6 @@ else() endif() -set_target_properties(bun PROPERTIES - CXX_STANDARD 20 - CXX_STANDARD_REQUIRED YES - CXX_EXTENSIONS NO - CXX_VISIBILITY_PRESET hidden - VISIBILITY_INLINES_HIDDEN YES -) - -target_link_libraries(bun PRIVATE uSockets) if (NOT MSVC) @@ -430,3 +463,4 @@ else() endif() + diff --git a/Makefile b/Makefile index fbc2649aa0..82c24bbc00 100644 --- a/Makefile +++ b/Makefile @@ -66,7 +66,7 @@ PACKAGE_JSON_VERSION = $(BUN_BASE_VERSION).$(BUILD_ID) BUN_BUILD_TAG = bun-v$(PACKAGE_JSON_VERSION) BUN_RELEASE_BIN = $(PACKAGE_DIR)/bun PRETTIER ?= $(shell which prettier 2>/dev/null || echo "./node_modules/.bin/prettier") -ESBUILD = $(shell which esbuild 2>/dev/null || echo "./node_modules/.bin/esbuild") +ESBUILD = "$(shell which esbuild 2>/dev/null || echo "./node_modules/.bin/esbuild")" DSYMUTIL ?= $(shell which dsymutil 2>/dev/null || which dsymutil-15 2>/dev/null) WEBKIT_DIR ?= $(realpath src/bun.js/WebKit) WEBKIT_RELEASE_DIR ?= $(WEBKIT_DIR)/WebKitBuild/Release @@ -74,7 +74,7 @@ WEBKIT_DEBUG_DIR ?= $(WEBKIT_DIR)/WebKitBuild/Debug WEBKIT_RELEASE_DIR_LTO ?= $(WEBKIT_DIR)/WebKitBuild/ReleaseLTO -NPM_CLIENT ?= $(shell which bun 2>/dev/null || which npm 2>/dev/null) +NPM_CLIENT = "$(shell which bun 2>/dev/null || which npm 2>/dev/null)" ZIG ?= $(shell which zig 2>/dev/null || echo -e "error: Missing zig. Please make sure zig is in PATH. Or set ZIG=/path/to-zig-executable") # We must use the same compiler version for the JavaScriptCore bindings and JavaScriptCore diff --git a/src/bun.js/api/bun.zig b/src/bun.js/api/bun.zig index 5c9363b6da..7e0622bdc7 100644 --- a/src/bun.js/api/bun.zig +++ b/src/bun.js/api/bun.zig @@ -204,7 +204,7 @@ const MarkedArrayBuffer = @import("../base.zig").MarkedArrayBuffer; const getAllocator = @import("../base.zig").getAllocator; const JSValue = @import("root").bun.JSC.JSValue; -const Microtask = @import("root").bun.JSC.Microtask; + const JSGlobalObject = @import("root").bun.JSC.JSGlobalObject; const ExceptionValueRef = @import("root").bun.JSC.ExceptionValueRef; const JSPrivateDataPtr = @import("root").bun.JSC.JSPrivateDataPtr; diff --git a/src/bun.js/api/ffi.zig b/src/bun.js/api/ffi.zig index 097b66d35a..75056454d6 100644 --- a/src/bun.js/api/ffi.zig +++ b/src/bun.js/api/ffi.zig @@ -50,7 +50,7 @@ const MarkedArrayBuffer = @import("../base.zig").MarkedArrayBuffer; const getAllocator = @import("../base.zig").getAllocator; const JSValue = @import("root").bun.JSC.JSValue; -const Microtask = @import("root").bun.JSC.Microtask; + const JSGlobalObject = @import("root").bun.JSC.JSGlobalObject; const ExceptionValueRef = @import("root").bun.JSC.ExceptionValueRef; const JSPrivateDataPtr = @import("root").bun.JSC.JSPrivateDataPtr; diff --git a/src/bun.js/api/server.zig b/src/bun.js/api/server.zig index 253568739b..08a2a79ba5 100644 --- a/src/bun.js/api/server.zig +++ b/src/bun.js/api/server.zig @@ -49,7 +49,7 @@ const MarkedArrayBuffer = @import("../base.zig").MarkedArrayBuffer; const getAllocator = @import("../base.zig").getAllocator; const JSValue = @import("root").bun.JSC.JSValue; -const Microtask = @import("root").bun.JSC.Microtask; + const JSGlobalObject = @import("root").bun.JSC.JSGlobalObject; const ExceptionValueRef = @import("root").bun.JSC.ExceptionValueRef; const JSPrivateDataPtr = @import("root").bun.JSC.JSPrivateDataPtr; diff --git a/src/bun.js/bindings/ActiveDOMCallback.cpp b/src/bun.js/bindings/ActiveDOMCallback.cpp index 2f7936aef3..1a0fb426f9 100644 --- a/src/bun.js/bindings/ActiveDOMCallback.cpp +++ b/src/bun.js/bindings/ActiveDOMCallback.cpp @@ -28,7 +28,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "config.h" +#include "webcore/config.h" #include "ActiveDOMCallback.h" #include "ScriptExecutionContext.h" diff --git a/src/bun.js/bindings/AsyncContextFrame.cpp b/src/bun.js/bindings/AsyncContextFrame.cpp index 6a43e6506d..f952188424 100644 --- a/src/bun.js/bindings/AsyncContextFrame.cpp +++ b/src/bun.js/bindings/AsyncContextFrame.cpp @@ -1,7 +1,7 @@ #include "root.h" #include "ZigGlobalObject.h" #include "AsyncContextFrame.h" -#include "JavaScriptCore/InternalFieldTuple.h" +#include using namespace JSC; using namespace WebCore; @@ -62,7 +62,7 @@ void AsyncContextFrame::visitChildrenImpl(JSCell* cell, Visitor& visitor) DEFINE_VISIT_CHILDREN(AsyncContextFrame); -extern "C" EncodedJSValue AsyncContextFrame__withAsyncContextIfNeeded(JSGlobalObject* globalObject, EncodedJSValue callback) +extern "C" JSC::EncodedJSValue AsyncContextFrame__withAsyncContextIfNeeded(JSGlobalObject* globalObject, JSC::EncodedJSValue callback) { return JSValue::encode(AsyncContextFrame::withAsyncContextIfNeeded(globalObject, JSValue::decode(callback))); } diff --git a/src/bun.js/bindings/AsyncContextFrame.h b/src/bun.js/bindings/AsyncContextFrame.h index f5ddf4ce0b..7635cb19c6 100644 --- a/src/bun.js/bindings/AsyncContextFrame.h +++ b/src/bun.js/bindings/AsyncContextFrame.h @@ -2,7 +2,7 @@ #include "root.h" #include "BunClientData.h" -#include "JavaScriptCore/CallData.h" +#include class AsyncContextFrame : public JSC::JSNonFinalObject { public: diff --git a/src/bun.js/bindings/Buffer.cpp b/src/bun.js/bindings/Buffer.cpp index 950de27c59..56c27e4ed7 100644 --- a/src/bun.js/bindings/Buffer.cpp +++ b/src/bun.js/bindings/Buffer.cpp @@ -7,7 +7,7 @@ #include "root.h" #include "Buffer.h" -#include "JavaScriptCore/Uint8Array.h" +#include namespace WebCore { diff --git a/src/bun.js/bindings/Buffer.h b/src/bun.js/bindings/Buffer.h index 4f15835135..3a174a2635 100644 --- a/src/bun.js/bindings/Buffer.h +++ b/src/bun.js/bindings/Buffer.h @@ -8,8 +8,8 @@ #include "root.h" #include "BufferEncodingType.h" -#include "JavaScriptCore/GenericTypedArrayView.h" -#include "JavaScriptCore/JSBase.h" +#include +#include #include "headers-handwritten.h" extern "C" JSC::EncodedJSValue JSBuffer__bufferFromLength(JSC::JSGlobalObject* lexicalGlobalObject, int64_t length); diff --git a/src/bun.js/bindings/BunClientData.cpp b/src/bun.js/bindings/BunClientData.cpp index 9af17d6384..544827ae7e 100644 --- a/src/bun.js/bindings/BunClientData.cpp +++ b/src/bun.js/bindings/BunClientData.cpp @@ -4,21 +4,21 @@ #include "ExtendedDOMClientIsoSubspaces.h" #include "ExtendedDOMIsoSubspaces.h" -#include "JavaScriptCore/FastMallocAlignedMemoryAllocator.h" -#include "JavaScriptCore/HeapInlines.h" -#include "JavaScriptCore/IsoHeapCellType.h" -#include "JavaScriptCore/JSDestructibleObjectHeapCellType.h" -// #include "JavaScriptCore/MarkingConstraint.h" -#include "JavaScriptCore/SubspaceInlines.h" -#include "JavaScriptCore/VM.h" -#include "wtf/MainThread.h" +#include +#include +#include +#include +// #include +#include +#include +#include #include "JSDOMConstructorBase.h" #include "JSDOMBuiltinConstructorBase.h" #include "BunGCOutputConstraint.h" #include "WebCoreTypedArrayController.h" -#include "JavaScriptCore/JSCInlines.h" +#include #include "JSDOMWrapper.h" #include diff --git a/src/bun.js/bindings/BunClientData.h b/src/bun.js/bindings/BunClientData.h index 0bee575df3..beede7e3bd 100644 --- a/src/bun.js/bindings/BunClientData.h +++ b/src/bun.js/bindings/BunClientData.h @@ -17,12 +17,12 @@ class DOMWrapperWorld; #include "BunBuiltinNames.h" // #include "WebCoreJSBuiltins.h" // #include "WorkerThreadType.h" -#include "wtf/Function.h" -#include "wtf/HashSet.h" -#include "wtf/RefPtr.h" -#include "JavaScriptCore/WeakInlines.h" -#include "JavaScriptCore/IsoSubspacePerVM.h" -#include "wtf/StdLibExtras.h" +#include +#include +#include +#include +#include +#include #include "WebCoreJSBuiltins.h" #include "JSCTaskScheduler.h" diff --git a/src/bun.js/bindings/BunGCOutputConstraint.cpp b/src/bun.js/bindings/BunGCOutputConstraint.cpp index 97ee0761ba..eb321cd6b0 100644 --- a/src/bun.js/bindings/BunGCOutputConstraint.cpp +++ b/src/bun.js/bindings/BunGCOutputConstraint.cpp @@ -25,11 +25,11 @@ #include "config.h" -#include "JavaScriptCore/WeakInlines.h" -#include "JavaScriptCore/AbstractSlotVisitorInlines.h" +#include +#include -#include "JavaScriptCore/VM.h" -#include "JavaScriptCore/MarkingConstraint.h" +#include +#include // namespace JSC { @@ -134,10 +134,10 @@ #include "BunGCOutputConstraint.h" #include "WebCoreJSClientData.h" -#include "JavaScriptCore/BlockDirectoryInlines.h" -#include "JavaScriptCore/HeapInlines.h" -#include "JavaScriptCore/MarkedBlockInlines.h" -#include "JavaScriptCore/SubspaceInlines.h" +#include +#include +#include +#include namespace WebCore { diff --git a/src/bun.js/bindings/BunInjectedScriptHost.cpp b/src/bun.js/bindings/BunInjectedScriptHost.cpp index 2be574025c..d689d42371 100644 --- a/src/bun.js/bindings/BunInjectedScriptHost.cpp +++ b/src/bun.js/bindings/BunInjectedScriptHost.cpp @@ -8,7 +8,7 @@ #include "JSEventListener.h" #include "JSEventTarget.h" #include "JSWorker.h" -#include "JavaScriptCore/ObjectConstructor.h" +#include #include "JSFetchHeaders.h" #include "JSURLSearchParams.h" diff --git a/src/bun.js/bindings/BunObject.cpp b/src/bun.js/bindings/BunObject.cpp index 0b78d13679..bb40d191ad 100644 --- a/src/bun.js/bindings/BunObject.cpp +++ b/src/bun.js/bindings/BunObject.cpp @@ -5,9 +5,9 @@ #include "helpers.h" #include "IDLTypes.h" #include "DOMURL.h" -#include "JavaScriptCore/JSPromise.h" -#include "JavaScriptCore/JSBase.h" -#include "JavaScriptCore/BuiltinNames.h" +#include +#include +#include #include "ScriptExecutionContext.h" #include "WebCoreJSClientData.h" #include @@ -20,7 +20,7 @@ #include "headers.h" #include "BunObject.h" #include "WebCoreJSBuiltins.h" -#include "JavaScriptCore/JSObject.h" +#include #include "DOMJITIDLConvert.h" #include "DOMJITIDLType.h" #include "DOMJITIDLTypeFilter.h" @@ -46,7 +46,7 @@ static JSValue constructEnvObject(VM& vm, JSObject* object) return jsCast(object->globalObject())->processEnvObject(); } -static inline EncodedJSValue flattenArrayOfBuffersIntoArrayBuffer(JSGlobalObject* lexicalGlobalObject, JSValue arrayValue) +static inline JSC::EncodedJSValue flattenArrayOfBuffersIntoArrayBuffer(JSGlobalObject* lexicalGlobalObject, JSValue arrayValue) { auto& vm = lexicalGlobalObject->vm(); @@ -195,26 +195,26 @@ static JSValue constructPluginObject(VM& vm, JSObject* bunObject) return pluginFunction; } -extern "C" EncodedJSValue JSPasswordObject__create(JSGlobalObject*); +extern "C" JSC::EncodedJSValue JSPasswordObject__create(JSGlobalObject*); static JSValue constructPasswordObject(VM& vm, JSObject* bunObject) { return JSValue::decode(JSPasswordObject__create(bunObject->globalObject())); } -extern "C" EncodedJSValue Bun__DNSResolver__lookup(JSGlobalObject*, JSC::CallFrame*); -extern "C" EncodedJSValue Bun__DNSResolver__resolve(JSGlobalObject*, JSC::CallFrame*); -extern "C" EncodedJSValue Bun__DNSResolver__resolveSrv(JSGlobalObject*, JSC::CallFrame*); -extern "C" EncodedJSValue Bun__DNSResolver__resolveTxt(JSGlobalObject*, JSC::CallFrame*); -extern "C" EncodedJSValue Bun__DNSResolver__resolveSoa(JSGlobalObject*, JSC::CallFrame*); -extern "C" EncodedJSValue Bun__DNSResolver__resolveNaptr(JSGlobalObject*, JSC::CallFrame*); -extern "C" EncodedJSValue Bun__DNSResolver__resolveMx(JSGlobalObject*, JSC::CallFrame*); -extern "C" EncodedJSValue Bun__DNSResolver__resolveCaa(JSGlobalObject*, JSC::CallFrame*); -extern "C" EncodedJSValue Bun__DNSResolver__resolveNs(JSGlobalObject*, JSC::CallFrame*); -extern "C" EncodedJSValue Bun__DNSResolver__resolvePtr(JSGlobalObject*, JSC::CallFrame*); -extern "C" EncodedJSValue Bun__DNSResolver__resolveCname(JSGlobalObject*, JSC::CallFrame*); -extern "C" EncodedJSValue Bun__DNSResolver__getServers(JSGlobalObject*, JSC::CallFrame*); -extern "C" EncodedJSValue Bun__DNSResolver__reverse(JSGlobalObject*, JSC::CallFrame*); +extern "C" JSC::EncodedJSValue Bun__DNSResolver__lookup(JSGlobalObject*, JSC::CallFrame*); +extern "C" JSC::EncodedJSValue Bun__DNSResolver__resolve(JSGlobalObject*, JSC::CallFrame*); +extern "C" JSC::EncodedJSValue Bun__DNSResolver__resolveSrv(JSGlobalObject*, JSC::CallFrame*); +extern "C" JSC::EncodedJSValue Bun__DNSResolver__resolveTxt(JSGlobalObject*, JSC::CallFrame*); +extern "C" JSC::EncodedJSValue Bun__DNSResolver__resolveSoa(JSGlobalObject*, JSC::CallFrame*); +extern "C" JSC::EncodedJSValue Bun__DNSResolver__resolveNaptr(JSGlobalObject*, JSC::CallFrame*); +extern "C" JSC::EncodedJSValue Bun__DNSResolver__resolveMx(JSGlobalObject*, JSC::CallFrame*); +extern "C" JSC::EncodedJSValue Bun__DNSResolver__resolveCaa(JSGlobalObject*, JSC::CallFrame*); +extern "C" JSC::EncodedJSValue Bun__DNSResolver__resolveNs(JSGlobalObject*, JSC::CallFrame*); +extern "C" JSC::EncodedJSValue Bun__DNSResolver__resolvePtr(JSGlobalObject*, JSC::CallFrame*); +extern "C" JSC::EncodedJSValue Bun__DNSResolver__resolveCname(JSGlobalObject*, JSC::CallFrame*); +extern "C" JSC::EncodedJSValue Bun__DNSResolver__getServers(JSGlobalObject*, JSC::CallFrame*); +extern "C" JSC::EncodedJSValue Bun__DNSResolver__reverse(JSGlobalObject*, JSC::CallFrame*); static JSValue constructDNSObject(VM& vm, JSObject* bunObject) { @@ -387,8 +387,8 @@ JSC_DEFINE_HOST_FUNCTION(functionBunSleep, return JSC::JSValue::encode(promise); } -extern "C" EncodedJSValue Bun__escapeHTML8(JSGlobalObject* globalObject, EncodedJSValue input, const LChar* ptr, size_t length); -extern "C" EncodedJSValue Bun__escapeHTML16(JSGlobalObject* globalObject, EncodedJSValue input, const UChar* ptr, size_t length); +extern "C" JSC::EncodedJSValue Bun__escapeHTML8(JSGlobalObject* globalObject, JSC::EncodedJSValue input, const LChar* ptr, size_t length); +extern "C" JSC::EncodedJSValue Bun__escapeHTML16(JSGlobalObject* globalObject, JSC::EncodedJSValue input, const UChar* ptr, size_t length); // JSC_DEFINE_JIT_OPERATION(functionBunEscapeHTMLWithoutTypeCheck, JSC::EncodedJSValue, (JSC::JSGlobalObject * lexicalGlobalObject, JSObject* castedglobalObject, JSString* string)) // { @@ -426,7 +426,7 @@ JSC_DEFINE_HOST_FUNCTION(functionBunEscapeHTML, (JSC::JSGlobalObject * lexicalGl RELEASE_AND_RETURN(scope, JSValue::encode(string)); auto resolvedString = string->value(lexicalGlobalObject); - EncodedJSValue encodedInput = JSValue::encode(string); + JSC::EncodedJSValue encodedInput = JSValue::encode(string); if (!resolvedString.is8Bit()) { RELEASE_AND_RETURN(scope, Bun__escapeHTML16(lexicalGlobalObject, encodedInput, resolvedString.characters16(), length)); } else { diff --git a/src/bun.js/bindings/BunPlugin.cpp b/src/bun.js/bindings/BunPlugin.cpp index 129d7816b1..98d9ba104c 100644 --- a/src/bun.js/bindings/BunPlugin.cpp +++ b/src/bun.js/bindings/BunPlugin.cpp @@ -1,24 +1,24 @@ #include "BunPlugin.h" #include "headers-handwritten.h" -#include "JavaScriptCore/CatchScope.h" -#include "JavaScriptCore/JSGlobalObject.h" -#include "JavaScriptCore/JSTypeInfo.h" -#include "JavaScriptCore/Structure.h" +#include +#include +#include +#include #include "helpers.h" #include "ZigGlobalObject.h" -#include "JavaScriptCore/JavaScript.h" -#include "JavaScriptCore/JSObjectInlines.h" -#include "wtf/text/WTFString.h" -#include "JavaScriptCore/JSCInlines.h" +#include +#include +#include +#include -#include "JavaScriptCore/ObjectConstructor.h" -#include "JavaScriptCore/SubspaceInlines.h" -#include "JavaScriptCore/RegExpObject.h" -#include "JavaScriptCore/JSPromise.h" +#include +#include +#include +#include #include "BunClientData.h" -#include "JavaScriptCore/RegularExpression.h" +#include namespace Zig { @@ -34,7 +34,7 @@ static bool isValidNamespaceString(String& namespaceString) return namespaceRegex->match(namespaceString) > -1; } -static EncodedJSValue jsFunctionAppendOnLoadPluginBody(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callframe, BunPluginTarget target, BunPlugin::Base& plugin, void* ctx, OnAppendPluginCallback callback) +static JSC::EncodedJSValue jsFunctionAppendOnLoadPluginBody(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callframe, BunPluginTarget target, BunPlugin::Base& plugin, void* ctx, OnAppendPluginCallback callback) { JSC::VM& vm = globalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); @@ -86,7 +86,7 @@ static EncodedJSValue jsFunctionAppendOnLoadPluginBody(JSC::JSGlobalObject* glob return JSValue::encode(jsUndefined()); } -static EncodedJSValue jsFunctionAppendOnResolvePluginBody(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callframe, BunPluginTarget target, BunPlugin::Base& plugin, void* ctx, OnAppendPluginCallback callback) +static JSC::EncodedJSValue jsFunctionAppendOnResolvePluginBody(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callframe, BunPluginTarget target, BunPlugin::Base& plugin, void* ctx, OnAppendPluginCallback callback) { JSC::VM& vm = globalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); @@ -139,7 +139,7 @@ static EncodedJSValue jsFunctionAppendOnResolvePluginBody(JSC::JSGlobalObject* g return JSValue::encode(jsUndefined()); } -static EncodedJSValue jsFunctionAppendOnResolvePluginGlobal(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callframe, BunPluginTarget target) +static JSC::EncodedJSValue jsFunctionAppendOnResolvePluginGlobal(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callframe, BunPluginTarget target) { Zig::GlobalObject* global = Zig::jsCast(globalObject); @@ -148,7 +148,7 @@ static EncodedJSValue jsFunctionAppendOnResolvePluginGlobal(JSC::JSGlobalObject* return jsFunctionAppendOnResolvePluginBody(globalObject, callframe, target, plugins, global->bunVM(), callback); } -static EncodedJSValue jsFunctionAppendOnLoadPluginGlobal(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callframe, BunPluginTarget target) +static JSC::EncodedJSValue jsFunctionAppendOnLoadPluginGlobal(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callframe, BunPluginTarget target) { Zig::GlobalObject* global = Zig::jsCast(globalObject); @@ -187,7 +187,7 @@ JSC_DEFINE_HOST_FUNCTION(jsFunctionAppendOnResolvePluginBrowser, (JSC::JSGlobalO return jsFunctionAppendOnResolvePluginGlobal(globalObject, callframe, BunPluginTargetBrowser); } -extern "C" EncodedJSValue jsFunctionBunPluginClear(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callframe) +extern "C" JSC::EncodedJSValue jsFunctionBunPluginClear(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callframe) { Zig::GlobalObject* global = reinterpret_cast(globalObject); for (uint8_t i = 0; i < BunPluginTargetMax + 1; i++) { @@ -200,7 +200,7 @@ extern "C" EncodedJSValue jsFunctionBunPluginClear(JSC::JSGlobalObject* globalOb return JSValue::encode(jsUndefined()); } -extern "C" EncodedJSValue setupBunPlugin(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callframe, BunPluginTarget target) +extern "C" JSC::EncodedJSValue setupBunPlugin(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callframe, BunPluginTarget target) { JSC::VM& vm = globalObject->vm(); auto clientData = WebCore::clientData(vm); @@ -326,7 +326,7 @@ extern "C" EncodedJSValue setupBunPlugin(JSC::JSGlobalObject* globalObject, JSC: RELEASE_AND_RETURN(throwScope, JSValue::encode(jsUndefined())); } -extern "C" EncodedJSValue jsFunctionBunPlugin(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callframe) +extern "C" JSC::EncodedJSValue jsFunctionBunPlugin(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callframe) { Zig::GlobalObject* global = reinterpret_cast(globalObject); BunPluginTarget target = global->defaultBunPluginTarget; diff --git a/src/bun.js/bindings/BunPlugin.h b/src/bun.js/bindings/BunPlugin.h index cf37b739b2..c5f3d4493e 100644 --- a/src/bun.js/bindings/BunPlugin.h +++ b/src/bun.js/bindings/BunPlugin.h @@ -2,8 +2,8 @@ #include "root.h" #include "headers-handwritten.h" -#include "JavaScriptCore/JSGlobalObject.h" -#include "JavaScriptCore/Strong.h" +#include +#include #include "helpers.h" extern "C" JSC_DECLARE_HOST_FUNCTION(jsFunctionBunPlugin); @@ -67,7 +67,7 @@ public: { } - EncodedJSValue run(JSC::JSGlobalObject* globalObject, BunString* namespaceString, BunString* path); + JSC::EncodedJSValue run(JSC::JSGlobalObject* globalObject, BunString* namespaceString, BunString* path); }; class OnResolve final : public Base { @@ -78,7 +78,7 @@ public: { } - EncodedJSValue run(JSC::JSGlobalObject* globalObject, BunString* namespaceString, BunString* path, BunString* importer); + JSC::EncodedJSValue run(JSC::JSGlobalObject* globalObject, BunString* namespaceString, BunString* path, BunString* importer); }; }; diff --git a/src/bun.js/bindings/BunString.cpp b/src/bun.js/bindings/BunString.cpp index 8c5a1e66b7..8819e818ac 100644 --- a/src/bun.js/bindings/BunString.cpp +++ b/src/bun.js/bindings/BunString.cpp @@ -1,9 +1,9 @@ #include "root.h" #include "headers-handwritten.h" -#include "JavaScriptCore/JSCJSValueInlines.h" +#include #include "helpers.h" #include "simdutf.h" -#include "wtf/text/ExternalStringImpl.h" +#include #include "GCDefferalContext.h" #include #include @@ -278,7 +278,7 @@ extern "C" BunString BunString__createExternal(const char* bytes, size_t length, return { BunStringTag::WTFStringImpl, { .wtf = &impl.leakRef() } }; } -extern "C" EncodedJSValue BunString__toJSON( +extern "C" JSC::EncodedJSValue BunString__toJSON( JSC::JSGlobalObject* globalObject, BunString* bunString) { @@ -291,7 +291,7 @@ extern "C" EncodedJSValue BunString__toJSON( return JSC::JSValue::encode(result); } -extern "C" EncodedJSValue BunString__createArray( +extern "C" JSC::EncodedJSValue BunString__createArray( JSC::JSGlobalObject* globalObject, const BunString* ptr, size_t length) { diff --git a/src/bun.js/bindings/CommonJSModuleRecord.cpp b/src/bun.js/bindings/CommonJSModuleRecord.cpp index a1f5781d70..b644581d77 100644 --- a/src/bun.js/bindings/CommonJSModuleRecord.cpp +++ b/src/bun.js/bindings/CommonJSModuleRecord.cpp @@ -36,26 +36,24 @@ #include "root.h" #include "headers-handwritten.h" #include "ZigGlobalObject.h" -#include "JavaScriptCore/JSSourceCode.h" -#include "JavaScriptCore/JSString.h" -#include "JavaScriptCore/JSValueInternal.h" -#include "JavaScriptCore/JSVirtualMachineInternal.h" -#include "JavaScriptCore/ObjectConstructor.h" -#include "JavaScriptCore/OptionsList.h" -#include "JavaScriptCore/ParserError.h" -#include "JavaScriptCore/ScriptExecutable.h" -#include "JavaScriptCore/SourceOrigin.h" -#include "JavaScriptCore/StackFrame.h" -#include "JavaScriptCore/StackVisitor.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include #include "BunClientData.h" -#include "JavaScriptCore/Identifier.h" +#include #include "ImportMetaObject.h" -#include "JavaScriptCore/TypedArrayInlines.h" -#include "JavaScriptCore/PropertyNameArray.h" -#include "JavaScriptCore/JSWeakMap.h" -#include "JavaScriptCore/JSWeakMapInlines.h" -#include "JavaScriptCore/JSWithScope.h" +#include +#include +#include +#include +#include #include #include @@ -65,7 +63,7 @@ #include #include #include "ZigSourceProvider.h" -#include "JavaScriptCore/FunctionPrototype.h" +#include #include "CommonJSModuleRecord.h" #include #include @@ -271,7 +269,7 @@ JSC_DEFINE_CUSTOM_SETTER(setterPath, return true; } -extern "C" EncodedJSValue Resolver__propForRequireMainPaths(JSGlobalObject*); +extern "C" JSC::EncodedJSValue Resolver__propForRequireMainPaths(JSGlobalObject*); JSC_DEFINE_CUSTOM_GETTER(getterPaths, (JSC::JSGlobalObject * globalObject, JSC::EncodedJSValue thisValue, JSC::PropertyName)) { diff --git a/src/bun.js/bindings/CommonJSModuleRecord.h b/src/bun.js/bindings/CommonJSModuleRecord.h index e38d2e083a..cfc861ccd7 100644 --- a/src/bun.js/bindings/CommonJSModuleRecord.h +++ b/src/bun.js/bindings/CommonJSModuleRecord.h @@ -25,7 +25,7 @@ public: mutable JSC::WriteBarrier m_id; mutable JSC::WriteBarrier m_filename; mutable JSC::WriteBarrier m_dirname; - mutable JSC::WriteBarrier m_paths; + mutable JSC::WriteBarrier m_paths; mutable JSC::WriteBarrier sourceCode; bool ignoreESModuleAnnotation { false }; diff --git a/src/bun.js/bindings/DOMException.h b/src/bun.js/bindings/DOMException.h index f5e48262b3..b764393c17 100644 --- a/src/bun.js/bindings/DOMException.h +++ b/src/bun.js/bindings/DOMException.h @@ -30,7 +30,7 @@ #include "root.h" #include "ExceptionCode.h" -#include "wtf/text/WTFString.h" +#include namespace WebCore { diff --git a/src/bun.js/bindings/DOMFormData.cpp b/src/bun.js/bindings/DOMFormData.cpp index 6c204c5f4a..6567007a51 100644 --- a/src/bun.js/bindings/DOMFormData.cpp +++ b/src/bun.js/bindings/DOMFormData.cpp @@ -30,7 +30,7 @@ #include "config.h" #include "DOMFormData.h" -#include "wtf/URLParser.h" +#include namespace WebCore { diff --git a/src/bun.js/bindings/DOMURL.cpp b/src/bun.js/bindings/DOMURL.cpp index 31381b8673..8b437b5b72 100644 --- a/src/bun.js/bindings/DOMURL.cpp +++ b/src/bun.js/bindings/DOMURL.cpp @@ -32,7 +32,7 @@ // #include "PublicURLManager.h" // #include "ResourceRequest.h" #include "URLSearchParams.h" -// #include "wtf/MainThread.h" +// #include namespace WebCore { diff --git a/src/bun.js/bindings/bindings.zig b/src/bun.js/bindings/bindings.zig index 870b787384..9ca1b647cc 100644 --- a/src/bun.js/bindings/bindings.zig +++ b/src/bun.js/bindings/bindings.zig @@ -4917,31 +4917,8 @@ pub const JSValue = enum(JSValueReprInt) { extern "c" fn AsyncContextFrame__withAsyncContextIfNeeded(global: *JSGlobalObject, callback: JSValue) JSValue; -extern "c" fn Microtask__run(*Microtask, *JSGlobalObject) void; -extern "c" fn Microtask__run_default(*MicrotaskForDefaultGlobalObject, *JSGlobalObject) void; -pub const Microtask = opaque { - pub const name = "Zig::JSMicrotaskCallback"; - pub const namespace = "Zig"; - pub fn run(this: *Microtask, global_object: *JSGlobalObject) void { - if (comptime is_bindgen) { - return; - } - - return Microtask__run(this, global_object); - } -}; - -pub const MicrotaskForDefaultGlobalObject = opaque { - pub fn run(this: *MicrotaskForDefaultGlobalObject, global_object: *JSGlobalObject) void { - if (comptime is_bindgen) { - return; - } - - return Microtask__run_default(this, global_object); - } -}; pub const Exception = extern struct { pub const shim = Shimmer("JSC", "Exception", @This()); diff --git a/src/bun.js/bindings/blob.cpp b/src/bun.js/bindings/blob.cpp index 0f255d7c89..dfd98d45ba 100644 --- a/src/bun.js/bindings/blob.cpp +++ b/src/bun.js/bindings/blob.cpp @@ -19,7 +19,7 @@ JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlo auto fileNameStr = impl->fileName(); BunString filename = Bun::toString(fileNameStr); - EncodedJSValue encoded = Blob__create(lexicalGlobalObject, impl->impl()); + JSC::EncodedJSValue encoded = Blob__create(lexicalGlobalObject, impl->impl()); JSBlob* blob = jsCast(JSC::JSValue::decode(encoded)); Blob__setAsFile(blob->wrapped(), &filename); diff --git a/src/bun.js/bindings/c-bindings.cpp b/src/bun.js/bindings/c-bindings.cpp index ff4c8c4e7c..d198e74dce 100644 --- a/src/bun.js/bindings/c-bindings.cpp +++ b/src/bun.js/bindings/c-bindings.cpp @@ -1,23 +1,47 @@ // when we don't want to use @cInclude, we can just stick wrapper functions here -#include #include -#include +#include "root.h" + + +#if !OS(WINDOWS) +#include #include #include #include +#include + +#else +#include +#endif + + extern "C" int32_t get_process_priority(uint32_t pid) { +#if OS(WINDOWS) + int priority = 0; + if (uv_os_getpriority(pid, &priority)) + return 0; + return priority; +#else return getpriority(PRIO_PROCESS, pid); +#endif } extern "C" int32_t set_process_priority(uint32_t pid, int32_t priority) { +#if OS(WINDOWS) + return uv_os_setpriority(pid, priority); +#else return setpriority(PRIO_PROCESS, pid, priority); +#endif } extern "C" bool is_executable_file(const char* path) { +#if OS(WINDOWS) + return false; +#else #if defined(O_EXEC) // O_EXEC is macOS specific @@ -34,12 +58,15 @@ extern "C" bool is_executable_file(const char* path) // regular file and user can execute return S_ISREG(st.st_mode) && (st.st_mode & S_IXUSR); +#endif } extern "C" void bun_ignore_sigpipe() { +#if !OS(WINDOWS) // ignore SIGPIPE signal(SIGPIPE, SIG_IGN); +#endif } extern "C" ssize_t bun_sysconf__SC_CLK_TCK() { diff --git a/src/bun.js/bindings/coroutine.cpp b/src/bun.js/bindings/coroutine.cpp index a58804d7ae..bf3ebea3f9 100644 --- a/src/bun.js/bindings/coroutine.cpp +++ b/src/bun.js/bindings/coroutine.cpp @@ -1,7 +1,7 @@ #include "root.h" // #include "mimalloc.h" -#include "JavaScriptCore/VM.h" +#include // #define MCO_API // #define MCO_MALLOC mi_malloc diff --git a/src/bun.js/bindings/debug-helpers.h b/src/bun.js/bindings/debug-helpers.h index a0fc998680..01dc92df8f 100644 --- a/src/bun.js/bindings/debug-helpers.h +++ b/src/bun.js/bindings/debug-helpers.h @@ -1,6 +1,6 @@ #include "root.h" -#include "JavaScriptCore/InspectorDebuggerAgent.h" +#include namespace JSC { Inspector::InspectorDebuggerAgent* debuggerAgent(JSC::JSGlobalObject* globalObject)