Rust

Программные средства разработки

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Rust

Непрочитанное сообщение Olej » 16 фев 2018, 18:30

Прямо сегодня 16.02.2018 пришло сообщение об обновлении последней стабильной версии Rust до 1.24.
Было вот:

Код: Выделить всё

[olej@dell src]$ rustc --version
rustc 1.23.0 (766bd11c8 2018-01-01)
Вот как чрезвычайно просто и удобно обновляется версия:

Код: Выделить всё

[olej@dell src]$ rustup update stable
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
info: latest update on 2018-02-15, rust version 1.24.0 (4d90ac38c 2018-02-12)
info: downloading component 'rustc'
 47.8 MiB /  47.8 MiB (100 %)   3.2 MiB/s ETA:   0 s                
info: downloading component 'rust-std'
 67.2 MiB /  67.2 MiB (100 %)   3.2 MiB/s ETA:   0 s                
info: downloading component 'cargo'
  4.2 MiB /   4.2 MiB (100 %)   3.0 MiB/s ETA:   0 s                
info: downloading component 'rust-docs'
  4.6 MiB /   4.6 MiB (100 %)   3.3 MiB/s ETA:   0 s                
info: removing component 'rustc'
info: removing component 'rust-std'
info: removing component 'cargo'
info: removing component 'rust-docs'
info: installing component 'rustc'
info: installing component 'rust-std'
info: installing component 'cargo'
info: installing component 'rust-docs'
  stable-x86_64-unknown-linux-gnu updated - rustc 1.24.0 (4d90ac38c 2018-02-12)
Этот выпуск содержит два очень интересных нововведения: rustfmt и инкрементальную компиляцию!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Rust

Непрочитанное сообщение Olej » 12 май 2022, 19:46

Кстати, в довольно обстоятельных разговорах моих с кем-то из редакторов крупнейшего издательства BHV (накануне войны) их из всех вариантов интересовали только, в разных перепевках, Go и Rust (ну ещё и Linux ;-) ), и даже если мы отклонялись в сторону в разговорах - они тут же возвращали разговоры в этот мэйнстрим.

Эти разговоры меня и подтолкнули собрать свои наброски и черновики в один текст относительно Go: Книга: "Linux: многопроцессорная эффективность. Выбираем Go". А там ещё выпало целыми днями, 2.5 месяца, 78-день - сидеть дома безвылазно, комендантский час, где-то не так далеко РСЗО, Град, Ураган и Солнцепёк :lol: :shock:

Книга про Go закончена. Самое время с любопытством посмотреть что там с Rust, как обстоят дела через 4 года... ;-)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Rust

Непрочитанное сообщение Olej » 12 май 2022, 21:01

Olej писал(а):
12 май 2022, 19:46
что там с Rust, как обстоят дела через 4 года...
Версия 1.60.0
Rust невероятно быстр и эффективен по использованию памяти: без рантайма или сборщика мусора он может обеспечить работу критичных для производительности сервисов, запускаться на встраиваемых устройствах и легко интегрироваться с другими языками.
Богатая система типов Rust и модель владения гарантируют потокобезопасность и безопасность памяти, и позволяют устранить множество классов ошибок во время компиляции
У Rust отличная документация, дружественный компилятор с полезными сообщениями об ошибках и первоклассный инструментарий — интегрированный пакетный менеджер и инструмент сборки, умная мультиредакторная поддержка с автокомплитом, проверками типов, автоформатированием и многим другим.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Rust

Непрочитанное сообщение Olej » 12 май 2022, 21:06

Olej писал(а):
12 май 2022, 21:01
интегрированный пакетный менеджер и инструмент сборки
Установка Rust
Используя rustup (рекомендуется)
Кажется у вас запущена macOS, Linux или другая Unix-подобная ОС. Для загрузки Rustup и установки Rust, запустите следующее в вашем терминале и следуйте инструкциям на экране.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Rust устанавливается и управляется при помощи rustup. Rust имеет 6-недельный процесс выпуска и поддерживает большое количество платформ, так что большое количество сборок Rust доступно в любое время. rustup согласованно управляет этими сборками на каждой платформе, поддерживаемой Rust, включая установку Rust из beta и nightly каналов выпусков, а также поддерживает дополнительные цели для кросс-компиляции.

Если вы ранее устанавливали rustup, то вы можете обновить инструменты разработчика запустив rustup update.
Если вы по какой-то причине хотите удалить Rust, вы можете запустить rustup self uninstall. Нам будет тебя не хватать!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Rust

Непрочитанное сообщение Olej » 12 май 2022, 21:20

Olej писал(а):
12 май 2022, 21:06
Используя rustup (рекомендуется)

Код: Выделить всё

olej@R420:~/2022/Rust$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
info: downloading installer

Welcome to Rust!

This will download and install the official compiler for the Rust
programming language, and its package manager, Cargo.

Rustup metadata and toolchains will be installed into the Rustup
home directory, located at:

  /home/olej/.rustup

This can be modified with the RUSTUP_HOME environment variable.

The Cargo home directory located at:

  /home/olej/.cargo

This can be modified with the CARGO_HOME environment variable.

The cargo, rustc, rustup and other commands will be added to
Cargo's bin directory, located at:

  /home/olej/.cargo/bin

This path will then be added to your PATH environment variable by
modifying the profile files located at:

  /home/olej/.profile
  /home/olej/.bashrc

You can uninstall at any time with rustup self uninstall and
these changes will be reverted.

Current installation options:


   default host triple: x86_64-unknown-linux-gnu
     default toolchain: stable (default)
               profile: default
  modify PATH variable: yes

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>1

info: profile set to 'default'
info: default host triple is x86_64-unknown-linux-gnu
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
info: latest update on 2022-04-07, rust version 1.60.0 (7737e0b5c 2022-04-04)
info: downloading component 'cargo'
  6.3 MiB /   6.3 MiB (100 %)   2.7 MiB/s in  2s ETA:  0s
info: downloading component 'clippy'
info: downloading component 'rust-docs'
 19.5 MiB /  19.5 MiB (100 %)   2.5 MiB/s in  7s ETA:  0s
info: downloading component 'rust-std'
 26.3 MiB /  26.3 MiB (100 %)   2.6 MiB/s in 10s ETA:  0s
info: downloading component 'rustc'
 54.6 MiB /  54.6 MiB (100 %)   2.8 MiB/s in 19s ETA:  0s
info: downloading component 'rustfmt'
  3.9 MiB /   3.9 MiB (100 %)   2.5 MiB/s in  1s ETA:  0s
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
 19.5 MiB /  19.5 MiB (100 %)   6.9 MiB/s in  2s ETA:  0s
info: installing component 'rust-std'
 26.3 MiB /  26.3 MiB (100 %)   8.4 MiB/s in  3s ETA:  0s
info: installing component 'rustc'
 54.6 MiB /  54.6 MiB (100 %)  10.5 MiB/s in  5s ETA:  0s
info: installing component 'rustfmt'
info: default toolchain set to 'stable-x86_64-unknown-linux-gnu'

  stable-x86_64-unknown-linux-gnu installed - rustc 1.60.0 (7737e0b5c 2022-04-04)


Rust is installed now. Great!

To get started you may need to restart your current shell.
This would reload your PATH environment variable to include
Cargo's bin directory ($HOME/.cargo/bin).

To configure your current shell, run:
source $HOME/.cargo/env

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Rust

Непрочитанное сообщение Olej » 12 май 2022, 21:25

Olej писал(а):
12 май 2022, 21:20
Используя rustup (рекомендуется)
Установка сама прописывает $PATH:

Код: Выделить всё

olej@R420:~$ echo $PATH
/home/olej/.cargo/bin:/home/olej/.bin:/home/olej/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/olej/depot_tools
Вот таким образом:

Код: Выделить всё

olej@R420:~$ tail -n1  ~/.bashrc
. "$HOME/.cargo/env"

Код: Выделить всё

olej@R420:~$ cat $HOME/.cargo/env
#!/bin/sh
# rustup shell setup
# affix colons on either side of $PATH to simplify matching
case ":${PATH}:" in
    *:"$HOME/.cargo/bin":*)
        ;;
    *)
        # Prepending path in case a system-installed rustc needs to be overridden
        export PATH="$HOME/.cargo/bin:$PATH"
        ;;
esac

Код: Выделить всё

olej@R420:~$ which rustc
/home/olej/.cargo/bin/rustc

Код: Выделить всё

olej@R420:~$ rustc --version
rustc 1.60.0 (7737e0b5c 2022-04-04)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Rust

Непрочитанное сообщение Olej » 13 май 2022, 00:13

Olej писал(а):
12 май 2022, 21:06
Установка Rust
Есть и альтернативный способ установки - из репозитория своего дистрибутива (всегда более надёжный способ):

Код: Выделить всё

olej@R420:~/2022/Rust$ aptitude search rust | grep '  rust'
p  rust-all - Rust systems programming language - all developer tools
p  rust-clippy - Rust linter
p  rust-clippy:i386 - Rust linter
v  rust-clippy:any - 
p  rust-doc - Rust systems programming language - Documentation
p  rust-gdb - Rust debugger (gdb)
p  rust-lldb - Rust debugger (lldb)
p  rust-src - Rust systems programming language - source code
p  rustc - Rust systems programming language
p  rustc:i386 - Rust systems programming language
v  rustc:any - 
p  rustdoc-stripper - Strip rustdoc comments from source code
v  rustdoc-stripper:any - 
p  rustfmt - Rust formatting helper
p  rustfmt:i386 - Rust formatting helper
v  rustfmt:any - 
p  rusty-tags - generate tags for source code navigation for a cargo project
v  rusty-tags:any - 
И версия достаточно свежая:

Код: Выделить всё

olej@R420:~/2022/Rust$ aptitude show rust-all
Пакет: rust-all                                  
Версия: 1.57.0+dfsg1+llvm-0ubuntu1~20.04.1
Новый: да
Состояние: не установлен
Приоритет: необязательный
Раздел: universe/devel
Сопровождающий: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Архитектура: all
Размер в распакованном виде: 259 k
Зависит: rustc (>= 1.57.0+dfsg1+llvm-0ubuntu1~20.04.1), rustfmt (>= 1.57.0+dfsg1+llvm-0ubuntu1~20.04.1), rust-clippy (>=
         1.57.0+dfsg1+llvm-0ubuntu1~20.04.1), rust-gdb (>= 1.57.0+dfsg1+llvm-0ubuntu1~20.04.1) | rust-lldb (>= 1.57.0+dfsg1+llvm-0ubuntu1~20.04.1),
         cargo
Рекомендует: cargo (>= 0.57.0~~), cargo (< 0.58.0~~)
Предлагает: rust-doc (>= 1.57.0+dfsg1+llvm-0ubuntu1~20.04.1), rust-src (>= 1.57.0+dfsg1+llvm-0ubuntu1~20.04.1), libstd-rust-dev-wasm32 (>=
            1.57.0+dfsg1+llvm-0ubuntu1~20.04.1), libstd-rust-dev-windows (>= 1.57.0+dfsg1+llvm-0ubuntu1~20.04.1)
Описание: Rust systems programming language - all developer tools
 Rust is a curly-brace, block-structured expression language.  It visually resembles the C language family, but differs significantly in syntactic
 and semantic details.  Its design is oriented toward concerns of "programming in the large", that is, of creating and maintaining boundaries -
 both abstract and operational - that preserve large-system integrity, availability and concurrency. 
 
 It supports a mixture of imperative procedural, concurrent actor, object-oriented and pure functional styles.  Rust also supports generic
 programming and meta-programming, in both static and dynamic styles. 
 
 This package is an empty metapackage that depends on all developer tools in the standard rustc distribution that have been packaged for Debian.
Домашняя страница: http://www.rust-lang.org/

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Rust

Непрочитанное сообщение Olej » 13 май 2022, 15:02

Olej писал(а):
12 май 2022, 19:46
Книга про Go закончена. Самое время с любопытством посмотреть что там с Rust, как обстоят дела через 4 года...
В отношении сравнения Rust с Go меня главным образом интересуют вопросы:
1. многоплатформенность: как Rust установить на процессоры ARM, на малые архитектуры типа Raspberry Pi, Orange Pi ?
2. как обеспечивается кросс-разработка в Rust?
3. параллелизм в Rust и как он использует много процессоров (ядер)?
4. как объектно-ориентированные возможности реализуются в Rust?
... пока всё?

п.п.3-4 будут рассматриваться здесь: код на Rust.
А с п.п.1-2 буду посмотреть здесь.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Rust

Непрочитанное сообщение Olej » 13 май 2022, 15:06

Olej писал(а):
13 май 2022, 15:02
1. многоплатформенность: как Rust установить на процессоры ARM, на малые архитектуры типа Raspberry Pi, Orange Pi ?
Кстати ... в отношении размеров инсталляции Rust на X86_64 :

Код: Выделить всё

olej@R420:~$ which rustc
/home/olej/.cargo/bin/rustc

olej@R420:~$ tree ~/.cargo
/home/olej/.cargo
├── bin
│   ├── cargo
│   ├── cargo-clippy
│   ├── cargo-fmt
│   ├── cargo-miri
│   ├── clippy-driver
│   ├── rls
│   ├── rustc
│   ├── rustdoc
│   ├── rustfmt
│   ├── rust-gdb
│   ├── rust-lldb
│   └── rustup
└── env

1 directory, 13 files

Код: Выделить всё

olej@R420:~$ du -hs ~/.cargo
15M	/home/olej/.cargo

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Rust

Непрочитанное сообщение Olej » 13 май 2022, 15:10

Olej писал(а):
13 май 2022, 15:02
1. многоплатформенность: как Rust установить на процессоры ARM, на малые архитектуры типа Raspberry Pi, Orange Pi ?
Other ways to install rustup
* On Unix, run curl https://sh.rustup.rs -sSf | sh in your shell. This downloads and runs rustup-init.sh, which in turn downloads and runs the correct version of the rustup-init executable for your platform.
rustup-init can be configured interactively, and all options can additionally be controlled by command-line arguments, which can be passed through the shell script. Pass --help to rustup-init as follows to display the arguments rustup-init accepts:

Код: Выделить всё

curl https://sh.rustup.rs -sSf | sh -s -- --help
If you prefer not to use the shell script, you may directly download rustup-init for the platform of your choice:

aarch64-linux-android
aarch64-unknown-linux-gnu
aarch64-unknown-linux-musl
arm-linux-androideabi
arm-unknown-linux-gnueabi
arm-unknown-linux-gnueabihf
armv7-linux-androideabi
armv7-unknown-linux-gnueabihf
i686-apple-darwin
i686-linux-android
i686-pc-windows-gnu
i686-pc-windows-msvc
i686-unknown-linux-gnu
mips-unknown-linux-gnu
mips64-unknown-linux-gnuabi64
mips64el-unknown-linux-gnuabi64
mipsel-unknown-linux-gnu
powerpc-unknown-linux-gnu
powerpc64-unknown-linux-gnu
powerpc64le-unknown-linux-gnu
s390x-unknown-linux-gnu
x86_64-apple-darwin
x86_64-linux-android
x86_64-pc-windows-gnu
x86_64-pc-windows-msvc
x86_64-unknown-freebsd
x86_64-unknown-illumos
x86_64-unknown-linux-gnu
x86_64-unknown-linux-musl
x86_64-unknown-netbsd

Ответить

Вернуться в «Инструменты программирования»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей