2013년 4월 13일 토요일

Mozilla - Rust Language

삼성이 Mozilla와 손잡고 Google Blink와 Apple Webkit에 대항할 새로운 Webkit을 만들 계획을 하고 있다. 현재 C++ 을 개선한 자체언어로 이 언어를 통해 새로운 웹 브라우져 엔진을 만들고 있다. 이 Rust 을 이용한 새로운 엔진은 삼성의 Tizen OS에서 사용될 HTML5 기반의 Web Application 에 사용하기 위함인듯하다. 이는 Google 에서 벗어나 새로운 자체 플랫폼개발의지를 더욱 확고히하는 계기인듯 하다. 따라서 나는 Rust 에관해 Rust 공식 홈페이지
http://www.rust-lang.org/ 의 내용을 한글로 번역하며 부가설명을 붙여가며 공부할 계획이다. 그를위한 첫장 지금 시작해보자.

현재 Rust 는 Github 에서 오픈소스 형태로 개발되고 있으며 LLVM 기반의 중간언어형태의 컴파일과 C/C++ 컴파일을 지원한다. LLVM 을 기반으로 한다는 것은 곧 플랫폼에 종속적이지 않은 Multi platform 형태의 컴파일이 가능하다는 뜻이다. LLVM 에 대해서는 Rust 의 기본적인 시스템을 이해한 후에 알아보도록 하자.
참고로 git 주소는 https://github.com/mozilla/rust
rust tutorial http://rusttutorial.blogspot.kr/

Rust (a safe, concurrent, practical language )

러스트는 교정기이며 블럭구조화된 표현 언어이다. 러스트는 보이기에는 C 언어 계열과 닮았으나 syntactic 과 semantic 의 구체적인 부분이 매우 다르다. 이는 "크게 프로그래밍한다" 라는 관점을 지향하도록 디자인 되어 있으며 이는 큰 시스템의 완결성, 유용성 그리고 동시성을 보존하는 경계를 생성하고 유지한다는것을 뜻한다.

러스트는 명령적인 절차적 혼합과 동시적 행동, 객체지향 그리고 순수한 함수 스타일을 지원한다. 또한 제네릭 프로그래밍과 메타 프로그래밍을 지원하며 이 둘은 정적 , 동적 두 스타일 모두 가능하다.

전체 구성의 간략한 요약

Type System : 정적, 암시적, 직선적, 대수적, 지역적 추론
Memory safety : null 이 없거나 Dangling pointer, buffer overflows 가없다.
Concurrency : 메시지 전달을 통한 경량 task, 공유 메모리 부재
Generics : 타입 class들과 함께하는 type 파라미터
Exception handling : 복구 작업 격리와 풀기(unwinding)
Memory model : 선택적 지역-task GC , 지역 분석과 안전 포인터 타입
Compilation model : AOT(ahead-of-time) 또는 C/C++ 호환
License : dual MIT / Apache 2

맛뵈기


use core::rand::RngUtil;

fn main() {
    for ["Alice", "Bob", "Carol"].each |&name| {
        do spawn {
            let v = rand::Rng().shuffle([1, 2, 3]);
            for v.each |&num| {
                print(fmt!("%s says: '%d'\n", name, num))
            }
        }
    }
}

댓글 없음:

댓글 쓰기