mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
bun run clang-format (#14148)
Co-authored-by: Electroid <Electroid@users.noreply.github.com>
This commit is contained in:
55
.github/workflows/clang-format.yml
vendored
Normal file
55
.github/workflows/clang-format.yml
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
name: clang-format
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths:
|
||||
- ".github/workflows/clang-format.yml"
|
||||
- ".clang-format"
|
||||
- "package.json"
|
||||
- "scripts/**"
|
||||
- "cmake/**"
|
||||
- "src/**/*.{c,cpp,h,hpp}"
|
||||
- "packages/**/*.{c,cpp,h,hpp}"
|
||||
|
||||
env:
|
||||
BUN_VERSION: "1.1.27"
|
||||
LLVM_VERSION: "18.1.8"
|
||||
LLVM_VERSION_MAJOR: "18"
|
||||
|
||||
jobs:
|
||||
clang-format:
|
||||
name: clang-format
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: |
|
||||
.github
|
||||
.clang-format
|
||||
package.json
|
||||
scripts
|
||||
cmake
|
||||
src
|
||||
packages
|
||||
- name: Setup Bun
|
||||
uses: ./.github/actions/setup-bun
|
||||
with:
|
||||
bun-version: ${{ env.BUN_VERSION }}
|
||||
- name: Install LLVM
|
||||
run: |
|
||||
curl -fsSL https://apt.llvm.org/llvm.sh | sudo bash -s -- ${{ env.LLVM_VERSION_MAJOR }} all
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y ninja-build ccache
|
||||
- name: Format
|
||||
run: |
|
||||
bun run clang-format -DLLVM_VERSION=${{ env.LLVM_VERSION }}
|
||||
- name: Commit
|
||||
uses: stefanzweifel/git-auto-commit-action@v5
|
||||
with:
|
||||
commit_message: "`bun run clang-format`"
|
||||
3
.github/workflows/run-format.yml
vendored
3
.github/workflows/run-format.yml
vendored
@@ -47,9 +47,6 @@ jobs:
|
||||
- name: Format Zig
|
||||
run: |
|
||||
bun fmt:zig
|
||||
- name: Format Cpp
|
||||
run: |
|
||||
bun fmt:cpp
|
||||
- name: Commit
|
||||
uses: stefanzweifel/git-auto-commit-action@v5
|
||||
with:
|
||||
|
||||
@@ -39,3 +39,7 @@ include(SetupRust)
|
||||
# --- Targets ---
|
||||
|
||||
include(BuildBun)
|
||||
|
||||
# --- Analysis ---
|
||||
|
||||
include(RunClangFormat)
|
||||
|
||||
@@ -377,12 +377,12 @@ function(register_command)
|
||||
get_source_file_property(generated ${output} GENERATED)
|
||||
if(generated)
|
||||
list(REMOVE_ITEM CMD_EFFECTIVE_OUTPUTS ${output})
|
||||
list(APPEND CMD_EFFECTIVE_OUTPUTS ${output}.always_run)
|
||||
list(APPEND CMD_EFFECTIVE_OUTPUTS ${output}.always_run_${CMD_TARGET})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(CMD_ALWAYS_RUN)
|
||||
list(APPEND CMD_EFFECTIVE_OUTPUTS ${CMD_CWD}/.always_run)
|
||||
list(APPEND CMD_EFFECTIVE_OUTPUTS ${CMD_CWD}/.always_run_${CMD_TARGET})
|
||||
endif()
|
||||
|
||||
if(CMD_TARGET_PHASE)
|
||||
|
||||
37
cmake/analysis/RunClangFormat.cmake
Normal file
37
cmake/analysis/RunClangFormat.cmake
Normal file
@@ -0,0 +1,37 @@
|
||||
find_command(
|
||||
VARIABLE
|
||||
CLANG_FORMAT_PROGRAM
|
||||
COMMAND
|
||||
clang-format
|
||||
REQUIRED
|
||||
OFF
|
||||
)
|
||||
|
||||
set(CLANG_FORMAT_SOURCES ${BUN_C_SOURCES} ${BUN_CXX_SOURCES})
|
||||
|
||||
register_command(
|
||||
TARGET
|
||||
clang-format-check
|
||||
COMMENT
|
||||
"Running clang-format"
|
||||
COMMAND
|
||||
${CLANG_FORMAT_PROGRAM}
|
||||
-Werror
|
||||
--dry-run
|
||||
--verbose
|
||||
${CLANG_FORMAT_SOURCES}
|
||||
ALWAYS_RUN
|
||||
)
|
||||
|
||||
register_command(
|
||||
TARGET
|
||||
clang-format
|
||||
COMMENT
|
||||
"Fixing clang-format"
|
||||
COMMAND
|
||||
${CLANG_FORMAT_PROGRAM}
|
||||
-i # edits files in-place
|
||||
--verbose
|
||||
${CLANG_FORMAT_SOURCES}
|
||||
ALWAYS_RUN
|
||||
)
|
||||
@@ -577,6 +577,10 @@ file(GLOB BUN_C_SOURCES ${CONFIGURE_DEPENDS}
|
||||
${BUN_USOCKETS_SOURCE}/src/crypto/*.c
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
list(APPEND BUN_C_SOURCES ${CWD}/src/bun.js/bindings/windows/musl-memmem.c)
|
||||
endif()
|
||||
|
||||
register_repository(
|
||||
NAME
|
||||
picohttpparser
|
||||
@@ -588,15 +592,10 @@ register_repository(
|
||||
picohttpparser.c
|
||||
)
|
||||
|
||||
list(APPEND BUN_C_SOURCES ${VENDOR_PATH}/picohttpparser/picohttpparser.c)
|
||||
|
||||
if(WIN32)
|
||||
list(APPEND BUN_C_SOURCES ${CWD}/src/bun.js/bindings/windows/musl-memmem.c)
|
||||
endif()
|
||||
|
||||
list(APPEND BUN_CPP_SOURCES
|
||||
${BUN_C_SOURCES}
|
||||
${BUN_CXX_SOURCES}
|
||||
${VENDOR_PATH}/picohttpparser/picohttpparser.c
|
||||
${BUN_ZIG_GENERATED_CLASSES_OUTPUTS}
|
||||
${BUN_JS_SINK_OUTPUTS}
|
||||
${BUN_JAVASCRIPT_OUTPUTS}
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
"bump": "bun ./scripts/bump.ts",
|
||||
"typecheck": "tsc --noEmit && cd test && bun run typecheck",
|
||||
"fmt": "prettier --config=.prettierrc-ci --write --cache './{.vscode,src,test,bench,packages/{bun-types,bun-inspector-*,bun-vscode,bun-debug-adapter-protocol}}/**/*.{mjs,ts,tsx,js,jsx}'",
|
||||
"fmt:cpp": "clang-format -i src/bun.js/bindings/**/*.{cpp,h} --verbose",
|
||||
"fmt:cpp": "bun run clang-format",
|
||||
"fmt:zig": "bun run zig:fmt",
|
||||
"lint": "eslint './**/*.d.ts' --cache",
|
||||
"lint:fix": "eslint './**/*.d.ts' --cache --fix",
|
||||
@@ -54,6 +54,8 @@
|
||||
"zig:fmt": "bun run zig fmt src/*.zig src/*/*.zig src/*/*/*.zig src/*/*/*/*.zig",
|
||||
"zig:check": "bun run zig build check --summary new",
|
||||
"zig:check-all": "bun run zig build check-all --summary new",
|
||||
"zig:check-windows": "bun run zig build check-windows --summary new"
|
||||
"zig:check-windows": "bun run zig build check-windows --summary new",
|
||||
"clang-format": "bun run build --target clang-format",
|
||||
"clang-format:check": "bun run build --target clang-format-check"
|
||||
}
|
||||
}
|
||||
|
||||
1
packages/bun-usockets/.clang-format
Normal file
1
packages/bun-usockets/.clang-format
Normal file
@@ -0,0 +1 @@
|
||||
DisableFormat: true
|
||||
1
packages/bun-uws/.clang-format
Normal file
1
packages/bun-uws/.clang-format
Normal file
@@ -0,0 +1 @@
|
||||
DisableFormat: true
|
||||
@@ -120,19 +120,13 @@ static void addInspector(void* app, JSC::JSGlobalObject* globalObject)
|
||||
globalObject->setInspectable(true);
|
||||
*ws->getUserData() = new SSLBunInspectorConnection(ws, globalObject);
|
||||
SSLBunInspectorConnection* inspector = *ws->getUserData();
|
||||
inspector->onOpen(globalObject);
|
||||
//
|
||||
},
|
||||
inspector->onOpen(globalObject); },
|
||||
.message = [](auto* ws, std::string_view message, uWS::OpCode opCode) {
|
||||
SSLBunInspectorConnection* inspector = *(SSLBunInspectorConnection**)ws->getUserData();
|
||||
inspector->onMessage(message);
|
||||
//
|
||||
},
|
||||
inspector->onMessage(message); },
|
||||
.drain = [](auto* ws) {
|
||||
SSLBunInspectorConnection* inspector = *(SSLBunInspectorConnection**)ws->getUserData();
|
||||
inspector->drain();
|
||||
//
|
||||
},
|
||||
inspector->drain(); },
|
||||
.ping = [](auto* /*ws*/, std::string_view) {
|
||||
/* Not implemented yet */ },
|
||||
.pong = [](auto* /*ws*/, std::string_view) {
|
||||
@@ -162,19 +156,13 @@ static void addInspector(void* app, JSC::JSGlobalObject* globalObject)
|
||||
globalObject->setInspectable(true);
|
||||
*ws->getUserData() = new BunInspectorConnectionNoSSL(ws, globalObject);
|
||||
BunInspectorConnectionNoSSL* inspector = *ws->getUserData();
|
||||
inspector->onOpen(globalObject);
|
||||
//
|
||||
},
|
||||
inspector->onOpen(globalObject); },
|
||||
.message = [](auto* ws, std::string_view message, uWS::OpCode opCode) {
|
||||
BunInspectorConnectionNoSSL* inspector = *(BunInspectorConnectionNoSSL**)ws->getUserData();
|
||||
inspector->onMessage(message);
|
||||
//
|
||||
},
|
||||
inspector->onMessage(message); },
|
||||
.drain = [](auto* ws) {
|
||||
BunInspectorConnectionNoSSL* inspector = *(BunInspectorConnectionNoSSL**)ws->getUserData();
|
||||
inspector->drain();
|
||||
//
|
||||
},
|
||||
inspector->drain(); },
|
||||
.ping = [](auto* /*ws*/, std::string_view) {
|
||||
/* Not implemented yet */ },
|
||||
.pong = [](auto* /*ws*/, std::string_view) {
|
||||
@@ -190,7 +178,8 @@ static void addInspector(void* app, JSC::JSGlobalObject* globalObject)
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" void Bun__addInspector(bool isSSL, void* app, JSC::JSGlobalObject* globalObject)
|
||||
extern "C" void
|
||||
Bun__addInspector(bool isSSL, void* app, JSC::JSGlobalObject* globalObject)
|
||||
{
|
||||
if (isSSL) {
|
||||
addInspector<true>((uWS::TemplatedApp<true>*)app, globalObject);
|
||||
|
||||
@@ -320,7 +320,8 @@ static JSValue constructBunShell(VM& vm, JSObject* bunObject)
|
||||
|
||||
// This value currently depends on a zig feature flag
|
||||
extern "C" JSC::EncodedJSValue Bun__getTemporaryDevServer(JSC::JSGlobalObject* bunObject);
|
||||
static JSValue constructBunKit(VM& vm, JSObject* bunObject) {
|
||||
static JSValue constructBunKit(VM& vm, JSObject* bunObject)
|
||||
{
|
||||
return JSC::JSValue::decode(Bun__getTemporaryDevServer(bunObject->globalObject()));
|
||||
}
|
||||
|
||||
|
||||
@@ -382,7 +382,7 @@ JSC_DEFINE_HOST_FUNCTION(Process_functionDlopen,
|
||||
return JSValue::encode(jsUndefined());
|
||||
}
|
||||
|
||||
JSC::EncodedJSValue (*napi_register_module_v1)(JSC::JSGlobalObject* globalObject,
|
||||
JSC::EncodedJSValue (*napi_register_module_v1)(JSC::JSGlobalObject * globalObject,
|
||||
JSC::EncodedJSValue exports);
|
||||
#if OS(WINDOWS)
|
||||
#define dlsym GetProcAddress
|
||||
|
||||
@@ -11,7 +11,8 @@ void generateNativeModule_BunObject(JSC::JSGlobalObject *lexicalGlobalObject,
|
||||
JSC::MarkedArgumentBuffer &exportValues) {
|
||||
// FIXME: this does not add each property as a top level export
|
||||
JSC::VM &vm = lexicalGlobalObject->vm();
|
||||
Zig::GlobalObject *globalObject = jsCast<Zig::GlobalObject *>(lexicalGlobalObject);
|
||||
Zig::GlobalObject *globalObject =
|
||||
jsCast<Zig::GlobalObject *>(lexicalGlobalObject);
|
||||
|
||||
JSObject *object = globalObject->bunObject();
|
||||
|
||||
|
||||
@@ -29,14 +29,15 @@ extern "C" mach_port_t io_darwin_create_machport(uint64_t wakeup, int32_t fd,
|
||||
|
||||
// Modify the port queue size to be 1 because we are only
|
||||
// using it for notifications and not for any other purpose.
|
||||
mach_port_limits_t limits = { .mpl_qlimit = 1 };
|
||||
kr = mach_port_set_attributes(self, port, MACH_PORT_LIMITS_INFO, (mach_port_info_t)&limits, MACH_PORT_LIMITS_INFO_COUNT);
|
||||
mach_port_limits_t limits = {.mpl_qlimit = 1};
|
||||
kr = mach_port_set_attributes(self, port, MACH_PORT_LIMITS_INFO,
|
||||
(mach_port_info_t)&limits,
|
||||
MACH_PORT_LIMITS_INFO_COUNT);
|
||||
|
||||
if (UNLIKELY(kr != KERN_SUCCESS)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// Configure the event to directly receive the Mach message as part of the
|
||||
// kevent64() call.
|
||||
kevent64_s event{};
|
||||
@@ -85,15 +86,10 @@ extern "C" bool io_darwin_schedule_wakeup(mach_port_t waker) {
|
||||
.msgh_id = 0,
|
||||
};
|
||||
|
||||
mach_msg_return_t kr = mach_msg(
|
||||
&msg,
|
||||
MACH_SEND_MSG | MACH_SEND_TIMEOUT,
|
||||
msg.msgh_size,
|
||||
0,
|
||||
MACH_PORT_NULL,
|
||||
mach_msg_return_t kr = mach_msg(&msg, MACH_SEND_MSG | MACH_SEND_TIMEOUT,
|
||||
msg.msgh_size, 0, MACH_PORT_NULL,
|
||||
0, // Fail instantly if the port is full
|
||||
MACH_PORT_NULL
|
||||
);
|
||||
MACH_PORT_NULL);
|
||||
|
||||
switch (kr) {
|
||||
case MACH_MSG_SUCCESS: {
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
#include "KitDevGlobalObject.h"
|
||||
#include "JavaScriptCore/GlobalObjectMethodTable.h"
|
||||
#include "JSNextTickQueue.h"
|
||||
#include "JavaScriptCore/GlobalObjectMethodTable.h"
|
||||
#include "headers-handwritten.h"
|
||||
|
||||
namespace Kit {
|
||||
|
||||
#define INHERIT_HOOK_METHOD(name) Zig::GlobalObject::s_globalObjectMethodTable. name
|
||||
#define INHERIT_HOOK_METHOD(name) \
|
||||
Zig::GlobalObject::s_globalObjectMethodTable.name
|
||||
|
||||
const JSC::GlobalObjectMethodTable DevGlobalObject::s_globalObjectMethodTable = {
|
||||
const JSC::GlobalObjectMethodTable DevGlobalObject::s_globalObjectMethodTable =
|
||||
{
|
||||
INHERIT_HOOK_METHOD(supportsRichSourceInfo),
|
||||
INHERIT_HOOK_METHOD(shouldInterruptScript),
|
||||
INHERIT_HOOK_METHOD(javaScriptRuntimeFlags),
|
||||
@@ -31,9 +33,11 @@ const JSC::GlobalObjectMethodTable DevGlobalObject::s_globalObjectMethodTable =
|
||||
INHERIT_HOOK_METHOD(canCompileStrings),
|
||||
};
|
||||
|
||||
DevGlobalObject* DevGlobalObject::create(JSC::VM& vm, JSC::Structure* structure, const JSC::GlobalObjectMethodTable* methodTable)
|
||||
{
|
||||
DevGlobalObject* ptr = new (NotNull, JSC::allocateCell<DevGlobalObject>(vm)) DevGlobalObject(vm, structure, methodTable);
|
||||
DevGlobalObject *
|
||||
DevGlobalObject::create(JSC::VM &vm, JSC::Structure *structure,
|
||||
const JSC::GlobalObjectMethodTable *methodTable) {
|
||||
DevGlobalObject *ptr = new (NotNull, JSC::allocateCell<DevGlobalObject>(vm))
|
||||
DevGlobalObject(vm, structure, methodTable);
|
||||
ptr->finishCreation(vm);
|
||||
return ptr;
|
||||
}
|
||||
@@ -43,18 +47,20 @@ void DevGlobalObject::finishCreation(JSC::VM &vm) {
|
||||
ASSERT(inherits(info()));
|
||||
}
|
||||
|
||||
extern "C" BunVirtualMachine* Bun__getVM();
|
||||
extern "C" BunVirtualMachine *Bun__getVM();
|
||||
|
||||
// A lot of this function is taken from 'Zig__GlobalObject__create'
|
||||
extern "C" DevGlobalObject* KitCreateDevGlobal(DevServer* owner, void* console) {
|
||||
JSC::VM& vm = JSC::VM::create(JSC::HeapType::Large).leakRef();
|
||||
extern "C" DevGlobalObject *KitCreateDevGlobal(DevServer *owner,
|
||||
void *console) {
|
||||
JSC::VM &vm = JSC::VM::create(JSC::HeapType::Large).leakRef();
|
||||
vm.heap.acquireAccess();
|
||||
JSC::JSLockHolder locker(vm);
|
||||
BunVirtualMachine* bunVM = Bun__getVM();
|
||||
BunVirtualMachine *bunVM = Bun__getVM();
|
||||
WebCore::JSVMClientData::create(&vm, bunVM);
|
||||
|
||||
JSC::Structure* structure = DevGlobalObject::createStructure(vm);
|
||||
DevGlobalObject* global = DevGlobalObject::create(vm, structure, &DevGlobalObject::s_globalObjectMethodTable);
|
||||
JSC::Structure *structure = DevGlobalObject::createStructure(vm);
|
||||
DevGlobalObject *global = DevGlobalObject::create(
|
||||
vm, structure, &DevGlobalObject::s_globalObjectMethodTable);
|
||||
if (!global)
|
||||
BUN_PANIC("Failed to create DevGlobalObject");
|
||||
|
||||
@@ -67,10 +73,11 @@ extern "C" DevGlobalObject* KitCreateDevGlobal(DevServer* owner, void* console)
|
||||
global->setStackTraceLimit(10); // Node.js defaults to 10
|
||||
|
||||
// vm.setOnComputeErrorInfo(computeErrorInfoWrapper);
|
||||
vm.setOnEachMicrotaskTick([global](JSC::VM& vm) -> void {
|
||||
vm.setOnEachMicrotaskTick([global](JSC::VM &vm) -> void {
|
||||
if (auto nextTickQueue = global->m_nextTickQueue.get()) {
|
||||
global->resetOnEachMicrotaskTick();
|
||||
Bun::JSNextTickQueue* queue = jsCast<Bun::JSNextTickQueue*>(nextTickQueue);
|
||||
Bun::JSNextTickQueue *queue =
|
||||
jsCast<Bun::JSNextTickQueue *>(nextTickQueue);
|
||||
queue->drain(vm, global);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user