What is the difference between V8 & Blink in Chromium?

Core Responsibilities

V8 Blink
Primary Role JavaScript/WebAssembly execution Web page rendering
Focus JS runtime optimization HTML/CSS rendering pipeline
Key Functions - JIT compilation
- Garbage collection
- ECMAScript implementation
- DOM tree management
- CSS parsing
- Layout calculations
- Event handling

Architectural Differences

V8 Components:

  • Ignition (interpreter)
  • TurboFan (optimizing compiler)
  • WebAssembly stack

Blink Components:

  • HTML parser
  • CSS engine
  • Layout and paint system
  • Web IDL bindings

Integration Points

  1. DOM Interaction: Blink exposes DOM APIs to V8
  2. Event Loop: Shared message pump with Chromium's main process
  3. Memory Management: Separate heaps with cross-component references

Performance Characteristics

Metric V8 Blink
Optimization Target JS execution speed Rendering latency
Critical Path Script execution time Style/layout/paint times
Memory Usage JS heap management DOM/node memory overhead

Evolution

  • V8: Developed as standalone engine since 2008
  • Blink: Forked from WebKit in 2013
  • Shared Chromium Infrastructure:
    • Inter-process communication
    • Security sandboxing
    • Memory management

Example Workflow

document.getElementById('demo').textContent = 'Hello World';
  1. V8: Executes JS logic
  2. Blink: Updates DOM tree ➔ Triggers reflow ➔ Repaints screen

Alternative comparison points: SpiderMonkey (Firefox) vs Gecko, JavaScriptCore vs WebKit (Safari)