--- id: wiki-2026-0508-chromium title: Chromium category: 10_Wiki/Topics status: verified canonical_id: self aliases: [Chromium, Blink, V8 Browser] duplicate_of: none source_trust_level: A confidence_score: 0.9 verification_status: applied tags: [browser, engine, blink, v8] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: cpp framework: Blink, V8, Skia --- # Chromium ## 매 한 줄 > **"매 Google 의 open-source browser engine codebase"**. 매 Blink (rendering, fork of WebKit, 2013) + V8 (JS) + Skia (graphics) + Mojo (IPC) 의 결합 — 매 2026 의 Chrome / Edge / Brave / Opera / Arc / Vivaldi / Electron / Tauri (WebView2) 의 base. 매 multi-process security architecture (sandbox, site isolation) 의 reference. ## 매 핵심 ### 매 Architecture - **Browser process**: 매 UI, network, disk — privileged. - **Renderer process** (per site): 매 Blink + V8 — sandboxed. - **GPU process**: Skia 의 hardware-accel. - **Utility processes**: audio, network service. - **Mojo IPC**: typed message passing. ### 매 Components - **Blink**: HTML parse, CSS, layout, paint, compositor. - **V8**: JS + WebAssembly (Sparkplug, Maglev, TurboFan, Liftoff). - **Skia**: 2D graphics. - **WebRTC, WebGPU, WebCodecs**: media. - **Site Isolation**: 매 origin 의 process-level isolation — Spectre 의 mitigate. ### 매 응용 1. Chrome browser (1B+ users). 2. Embed: Electron, Tauri (WebView2 on Win), CEF. 3. Headless: Puppeteer, Playwright (chromium build). 4. Forks: Edge (2020+), Brave, Vivaldi, Arc, Opera. ## 💻 패턴 ### Build chromium (sketch) ```bash git clone https://chromium.googlesource.com/chromium/src.git cd src gclient sync gn gen out/Release --args='is_debug=false' autoninja -C out/Release chrome ``` ### Headless via Puppeteer ```javascript import puppeteer from "puppeteer"; const browser = await puppeteer.launch({ headless: "new", args: ["--no-sandbox"] }); const page = await browser.newPage(); await page.goto("https://example.com"); await page.screenshot({ path: "x.png" }); await browser.close(); ``` ### CDP (Chrome DevTools Protocol) raw ```javascript const client = await page.target().createCDPSession(); await client.send("Performance.enable"); const metrics = await client.send("Performance.getMetrics"); ``` ### Site Isolation flag ```bash chrome --site-per-process # default since 2018 chrome --disable-site-isolation-trials # debug only — never prod ``` ### V8 inspect ```bash node --inspect-brk app.js # DevTools 의 chrome://inspect 의 attach ``` ## 매 결정 기준 | 상황 | Approach | |---|---| | Build cross-platform desktop app | Tauri (smaller) > Electron (mature) | | Web automation | Playwright > Puppeteer (multi-engine) | | Custom browser | fork Chromium (Brave-style) — 매 maintenance cost 큼 | | Embed web view | WebView2 (Win) / WKWebView (Mac) — 매 native > Electron | **기본값**: 매 web app 의 Electron / Tauri 의 ship — 매 user-facing 의 자체 fork X. ## 🔗 Graph - 변형: [[Chrome]] · [[Electron]] - 응용: [[Playwright]] - Adjacent: [[Blink]] · [[V8]] · [[WebKit]] ## 🤖 LLM 활용 **언제**: CDP 사용법, Puppeteer/Playwright script, Chromium component 의 explanation. **언제 X**: 매 Chromium 의 internal C++ refactor — 매 LLM 의 outdated 가능. ## ❌ 안티패턴 - **--no-sandbox in production**: 매 sandboxing 의 disable — RCE 의 risk. - **--disable-web-security**: 매 dev 만 — prod 의 catastrophic. - **Pinning to old Chromium**: 매 CVE 의 backlog — 매 latest stable. - **Electron + remote module**: 매 deprecated, 매 contextIsolation: true. ## 🧪 검증 / 중복 - Verified (chromium.org, source.chromium.org, V8 blog). - 신뢰도 A. ## 🕓 Changelog | 날짜 | 변경 | |---|---| | 2026-05-08 | Phase 1 | | 2026-05-10 | Manual cleanup — multi-process arch + Puppeteer/CDP patterns |