안녕하세요.
오늘은 Rust 언어를 사용해서 WebAssembly(WasM)로 Hello, World를 출력하는 간단한 예제를 진행해 보겠습니다.
Rust는 안전하고 고성능의 시스템 프로그래밍 언어로, 웹 개발에서도 점점 더 많이 사용되고 있습니다.
WebAssembly란?
WebAssembly(약칭 WasM)는 웹 브라우저에서 효율적으로 실행될 수 있는 이진 형식의 코드입니다.
이 언어는 다양한 언어(C, C++, Rust 등)로 작성된 코드를 브라우저에서 실행할 수 있도록 해주며, 즉시 실행 가능한 성능을 제공합니다.
Rust 환경 설정하기
먼저, Rust와 WebAssembly를 개발하기 위해 필요한 환경을 설정해야 합니다.
아래 단계에 따라 Rust를 설치하고, WebAssembly 타겟을 추가해 주세요.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
위 명령어를 터미널에 입력하여 Rust를 설치합니다.
설치가 완료되면 아래 명령어로 WebAssembly 타겟을 추가합니다.
rustup target add wasm32-unknown-unknown
새 프로젝트 생성하기
이제 Rust 프로젝트를 생성해 보겠습니다.
아래 명령어를 입력하여 프로젝트를 생성합니다.
cargo new hello_wasm --lib
hello_wasm 이라는 이름의 새로운 라이브러리 프로젝트가 생성됩니다.
생성된 디렉토리로 이동해 주세요.
cd hello_wasm
코드 작성하기
이제 lib.rs 파일을 열어서 아래의 코드로 Hello, World를 출력하는 간단한 함수를 작성해보겠습니다.
#[no_mangle]
pub extern "C" fn greet() {
println!("Hello, World!");
}
이 코드는 WebAssembly에서 사용할 수 있는 `greet`라는 이름의 외부 함수를 정의합니다.
`#[no_mangle]` 속성은 Rust 컴파일러가 함수 이름을 변경하지 않도록 합니다.
WebAssembly로 빌드하기
이제 작성한 코드를 WebAssembly로 빌드해 보겠습니다.
아래 명령어를 이용하여 빌드합니다.
cargo build --target wasm32-unknown-unknown --release
target/wasm32-unknown-unknown/release/ 디렉토리 안에 hello_wasm.wasm 파일이 생성됩니다.
HTML 파일 생성하기
이제 WebAssembly 모듈을 웹에서 사용할 수 있도록 HTML 파일을 작성합니다. 프로젝트 디렉토리 안에 index.html 파일을 생성합니다. 아래와 같이 작성해 주세요.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello Wasm</title>
</head>
<body>
<script>
fetch('hello_wasm.wasm')
.then(response => response.arrayBuffer())
.then(bytes => WebAssembly.instantiate(bytes))
.then(results => {
results.instance.exports.greet();
});
</script>
</body>
</html>
위의 HTML 코드는 WebAssembly 모듈을 비동기적으로 불러와 실행하는 역할을 합니다.
`greet` 함수를 호출하여 "Hello, World!"를 출력합니다.
서버에서 실행하기
이제 웹 서버를 통해 위의 HTML 파일을 실행해야 합니다. 아래의 명령어로 간단한 HTTP 서버를 실행합니다.
python3 -m http.server
브라우저를 열고 http://localhost:8000 에 접속하면 "Hello, World!"가 출력되는 것을 확인할 수 있습니다.
마무리
이번 포스팅에서는 Rust 언어를 이용하여 WebAssembly로 Hello, World를 출력하는 과정을 살펴보았습니다.
Rust의 성능과 WebAssembly의 이점을 결합하여 더욱 빠르고 안전한 웹 애플리케이션을 만들 수 있는 기반이 되기를 바랍니다.
'IT > Rust' 카테고리의 다른 글
Rust 언어의 조건문 소개 및 예제 (0) | 2025.03.05 |
---|---|
Rust에서의 반복문 구현 방법 (0) | 2025.03.02 |
Rust로 Hello World 예제 (0) | 2025.03.02 |
Rust 기반 프레임워크 소개 및 실습 (0) | 2025.03.01 |