본문 바로가기
IT/Rust

Rust로 WebAssembly(WasM) Hello, World 예제

by bamcong 2025. 3. 1.
728x90
반응형

안녕하세요.

오늘은 Rust 언어를 사용해서 WebAssembly(WasM)로 Hello, World를 출력하는 간단한 예제를 진행해 보겠습니다.

Rust는 안전하고 고성능의 시스템 프로그래밍 언어로, 웹 개발에서도 점점 더 많이 사용되고 있습니다.

Rust Programming Language

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의 이점을 결합하여 더욱 빠르고 안전한 웹 애플리케이션을 만들 수 있는 기반이 되기를 바랍니다.

728x90
반응형

'IT > Rust' 카테고리의 다른 글

Rust 언어의 조건문 소개 및 예제  (0) 2025.03.05
Rust에서의 반복문 구현 방법  (0) 2025.03.02
Rust로 Hello World 예제  (0) 2025.03.02
Rust 기반 프레임워크 소개 및 실습  (0) 2025.03.01