Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Engineering the Servo Web Browser Engine using Rust #9

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 78 additions & 0 deletions engineering-the-servo-web-browser-engine-using-rust.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
---
authors: "Brian Anderson et al."
title: "Engineering the Servo Web Browser Engine using Rust"
date: "2016"
link: "[github.com/larsbergstrom/papers](https://github.com/larsbergstrom/papers/blob/master/icse16-servo-submitted.pdf)"
---

# 러스트를 이용한 서보 웹 브라우저 엔진 개발

## 초록

현대적인 웹 브라우저들—인터넷 익스플로러, 파이어폭스, 크롬, 오페라, 사파리—에는 모두 C++로 작성된 코어 렌더링 엔진이 있다. C++는 시스템 프로그래머에게 컴파일 모델을 투명하게 제공하고, 하드웨어 기능과 메모리 사용을 완전히 통제할 수 있게 해주기 때문에 선택되곤 한다. 불행히도 C++는 복잡하고(특히 새로운 기여자들에게) 올바른 병렬 코드를 작성하기 어렵게 만들며, 보안 결함을 일으킬 수 있는 메모리 안전 문제에 매우 취약하다.

서보(_Servo_)는 모질라 리서치(_Mozilla Research_)가 시작한 프로젝트다. 서보 프로젝트는 다른 브라우저 엔진과 같은 기능을 보장하면서 병렬 하드웨어의 최신 트렌드와 메모리 안전성의 장점을 모두 취할 수 있는 새로운 웹 브라우저 엔진을 만들고자 한다. 여기에는 새로운 언어, 러스트(_Rust_)를 사용한다. 러스트는 C++와 유사한 수준의 시스템 통제를 제공하되, 메모리 문제들을 정적으로 방지하고, 병렬성과 동시성을 직접 지원한다.

이 논문에서는 고도화된 타입 시스템을 갖춘 언어가 다른 브라우저 엔진의 일반적인 보안 문제들을 해결할 수 있음을 보이고, 다른 브라우저 엔진이 겪는 소프트웨어 공학적 어려움을 해소할 수 있음을 보일 것이다. 또한 동일한 성능과 메모리 프로파일을 달성하는 코드를 생성할 수 있다는 사실을 제시할 것이다. 러스트는 새로운 오픈소스 기여자와 직원들, 심지어 C++ 또는 시스템 프로그래밍에 대한 배경지식이 없는 사람들도 쉽게 접근할 수 있다. 이 논문에서는 프로젝트 진행 중 마주한 몇 가지 함정에 대해 개략적으로 설명하고, 향후 개선을 위한 몇 가지 잠재 영역에 관해 설명할 것이다.

## 서론

## 브라우저

### HTML 및 CSS 파싱

### 스타일링

### 레이아웃

### 렌더링

### 컴포지팅

### 스크립팅

## 러스트

### 기능 개요

### 소유권

### 소유권과 동시성

## 서보

### 러스트의 문법

### 컴파일 전략

### 메모리 관리

### 언어 상호 운용성

### 라이브러리와 추상화

### 매크로

### 프로젝트 정적 분석

### 정수 오버플로우

### 새로운 기여자

### 모듈러 개발

## 미해결 문제

### Just-in-Time 코드

### 안전하지 않은 코드의 적절성

### 증분 계산

## 관련 브라우저 연구

## 결론

## 감사의 말

## 참고문헌
1 change: 1 addition & 0 deletions index.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Papers I Love

- [러스트를 이용한 서보 웹 브라우저 엔진 개발](engineering-the-servo-web-browser-engine-using-rust.html)
- [함수형 프로그래밍이 중요한 이유](why-functional-programming-matters.html)
- [다이나모: 아마존의 고가용성 키-값 저장소](dynamo-amazons-highly-available-key-value-store.html)
- [논문 읽는 방법](how-to-read-a-paper.html)
Expand Down