Язык программирования Rust с нуля [под Ubuntu x86]
Судя по анонсируем возможностям, язык программирования (ЯП) Rust будет вкуснейшим: лаконичность, ООП и функциональщина, ориентация на параллельность, статическая компиляция и так далее и тому подобное — ммм =)… Что же, опробуем блюдо от шеф повара, имя которому Mozilla Labs. :-)
Сначала установим необходимые библиотеки:
$ sudo apt-get install python3 make git g++ curl valgrind texinfo
Затем выкачаем LLVM:
$ svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
$ cd llvm/projects
$ svn co -r131034 http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
Собираем и инсталлируем LLVM (на время сборки и инсталляции уходим пить кофе, так как это длительный процесс):
$ cd llvm
$ ./configure --enable-optimized
$ make
$ sudo checkinstall
Скачиваем и собираем компилятор Rust (пока идёт сборка пьём чай):
$ git clone git://github.com/graydon/rust.git
$ cd rust
$ mkdir build
$ cd build
$ ../configure
$ make check
Настраиваем окружение для компилятора Rust:
$ export LD_LIBRARY_PATH=~/rust/build/rt:~/rust/build/rustllvm:~/rust/build/stage0/lib
Изучаем параметры запуска компилятора:
$ pwd
~/rust/build
$ stage0/rustc --help
usage: stage0/rustc [options] <input>
options:
-h --help display this message
-v --version print version info and exit
-o <filename> write output to <filename>
--glue generate glue.bc file
--shared compile a shared-library crate
--pretty [type] pretty-print the input instead of compiling
--ls list the symbols defined by a crate file
-L <path> add a directory to the library search path
--noverify suppress LLVM verification step (slight speedup)
--depend print dependencies, in makefile-rule form
--parse-only parse only; do not compile, assemble, or link
-g produce debug info
--OptLevel= optimize with possible levels 0-3
-O equivalent to --OptLevel=2
-S compile only; do not assemble or link
-c compile and assemble, but do not link
--emit-llvm produce an LLVM bitcode file
--save-temps write intermediate files in addition to normal output
--stats gather and report various compilation statistics
--time-passes time the individual phases of the compiler
--time-llvm-passes time the individual phases of the LLVM backend
--sysroot <path> override the system root (default: rustc's directory)
--no-typestate don't run the typestate pass (unsafe!)
Например, на момент написания статьи, у меня был развёрнут компилятор следующей версии:
$ stage0/rustc --version
stage0/rustc prerelease (8655349 2011-06-29 15:39:30 -0700)
Теперича напишем первую программу на Rust, для этого создадим файл hello.rs со следующим содержимым:
fn main() {
log "Hello World";
}
Скомпилируем наше первое приложение:
$ stage0/rustc hello.rs
На выходе получим бинарный файл hello.
Зададим переменную окружения RUST_LOG, которая расскажет, что для программы hello необходимо поддержать логирование в консоль:
$ export RUST_LOG=hello
И запустим наше приложение:
$ ./hello
rt: ---
rt: 1248:main:main: rust: Hello World
Ура, товарищи! Оно работает! Экспериментируйте, и у вас всё получиться. А вдруг, за ЯП Rust будущее разработки программного обеспечения?
Что дальше? А дальше, рекомендую ознакомиться с полезными ресурсами по Rust, там вы найдёте и спецификацию языка в формате PDF, и примеры, и фирменный склад для багов:
- Mozilla разрабатывает новый ЯП Rust
- Rust (programming language) Wikipedia
- Rust Language Wiki
- Rust Language Issues
- A Quick Look at the Rust Programming Language
- Development discussion for the Rust programming language
-
financialdream это понравилось
-
bridgesofpeace это понравилось
-
drevlyanin это опубликовал(а)