품질용 녹과 그물 모양 부품 - 소개
녹슬다
The Rust language is designed to guide you naturally towards reliable goal that is efficient in terms of speed and memory usage - Nicholas Matsakis and Aaron Turon
Rust는 하나systems-level programming language입니다.Rust는 데이터를 효율적으로 표현하기 위해 저급 메모리 관리를 제공합니다.
녹이 슬어 안전을 확보하다.따라서 애플리케이션을 간편하게 작성할 수 있으므로 걱정하지 않아도 됩니다dangling pointers.
녹슬어서 concurrency 아프지 않다.
Rust는 현대 언어로서 정의가 양호한(디자인이 양호한) API를 제공합니다.이로써 Rust는 고성능 응용 프로그램, 명령줄 인터페이스 응용 프로그램(CLI 응용 프로그램) 및 기타 응용 프로그램을 설계할 때 이상적인 언어가 되었다.
나의 《녹과 그물틀 조립》이라는 책을 봐라here
Rust의 두드러진 특징은 그것compiler
이다.네가 잘못을 저질렀을 때, 컴파일러는 너를 지도하고, 작문을 권한을 부여할 것이다. better code
Rust의 소유권 모델은 스레드 및 메모리 보안을 보장합니다.
Overall Rust ensures safety, concurrency, and makes you stay away from risks, crashes, and vulnerabilities.
녹망 세계
녹이 슬기는 느리지만 안정적으로 발전한다world of web development.
녹슨 것은 쉽게 시작된다. (만약 네 머리를 ownership model에 감는다면) 그리고 언제든지 너를 도울 수 있는 것이 하나 있다.
Rust는 WebAssemblyfirst class
를 지원합니다.Rust와 WebAssembly 도구 체인은 WebAssembly를 시작하는 것을 더욱 쉽고 빠르게 합니다.
JavaScript는 easy
입니다.그것들은 수백만 (심지어 수십억) 의 개발자로 하여금 응용 프로그램을 쓰기 시작할 수 있게 한다.개발 시 신속한 피드백 주기와 간단한 APIJavaScript는 우수한 성능을 제공합니다.최적화된 경우 JavaScript에서 오류가 발생할 수 있습니다better performance
.
JavaScript는 안정성이 떨어지고 일관성이 없는 성능을 제공합니다.성능 향상을 위한 최적화는 모든 JavaScript 엔진에서 일관되지 않습니다.따라서 개발자는 JavaScript를 사용하여 최적화되고 일관된 성능을 제공하기 어렵습니다.
좋은 동네예요.
네트워크 조립
는 정적 유형, 컴파일링, 생산 최적화, 선형 메모리 레이아웃 사용 등 더욱 좋은 성능을 보장했다.
WebAssembly는 브라우저에서 기본 코드를 쉽게 실행할 수 있습니다.Rust는 Rust를 WebAssembly 바이너리 코드로 쉽게 변환할 수 있습니다.
Rust는 가장 좋은 도구 지원을 가지고 있으며 자바스크립트 개발자에게 익숙한 도구와 잘 통합될 수 있습니다.
네트워크 조립
WebAssembly의 Rust 도구 체인 설정하기
는 C 또는 C++를 WebAssembly 모듈로 컴파일하는 환경 설정을 간소화했다.
Rust는 WebAssembly를 일등 시민으로 여긴다.WebAssembly에 더 나은 도구 체인과 지원을 제공합니다.
Rust는 표준 Rust 컴파일러rustc
에 자신의 WebAssembly 도구 체인을 구축했다.이것은 Rust 개발자가 Rust 코드를 WebAssembly 모듈로 컴파일할 수 있게 한다.
Emscripten는 Rust 설치 프로그램 및 버전 관리 도구입니다.Rustop 도구는 노드Rustup와 유사합니다.js.Rustop은 설치, 업데이트 및 제거rustc
, cargo
및 rustup
자체를 지원합니다.
nvm는 녹 컴파일러다.그것은 원본 코드를 라이브러리나 실행 가능한 파일로 변환합니다.
Rustc는 녹슨 포장 매니저다.Cargo는 Node의 NPM과 유사합니다.Cargo는 패키지 종속 항목을 다운로드하여 Rust crates 라이브러리(crates.io)에 컴파일, 패키지 및 업로드합니다.
Cargo downloads your Rust project's dependencies and compiles your project. - Cargo team
Cargo는 프로젝트를 만들고, 실행하고, 다운로드하고, 컴파일하고, 테스트하고, 실행하는 것을 더욱 쉽게 합니다.cargo 명령은 내부에서 rustc 컴파일러를 호출해서 컴파일을 실행합니다.
화물.
철녹을 설치하다
이제 시작하겠습니다.rustup
명령을 사용하여 Rust를 설치합니다.
Linux 또는 MacOs
$ curl https://sh.rustup.rs --sSf | sh
스크립트는 스크립트 파일을 다운로드하고 실행합니다.스크립트는 Rust 언어를 설치합니다.rustc
와 cargo
는 모두 ~/.cargo/bin
에 설치되어 있고 기초 도구체인에 접근할 수 있는 권한을 부여한다.
설치가 성공적으로 완료되면 실행을 통해 설치를 검사할 수 있습니다.
$ rustc --version
rustc 1.40.0 (73528e339 2019-12-16)
Windows의 경우:
Rustup을 설치하려면 사용 가능한 바이너리 파일
에서 Rustup을 다운로드합니다.rustc와 카고는 모두 사용자 폴더에 설치되어 있습니다.
Note that you will require C++ build tools for Visual Studio 2013 or later. You can install them from here
실행rustc --version
을 통해 설치 상태 확인
여기 있다
녹슬다
Rustup
는 도구 체인 다중 복용기다.그것은 많은 Rust 도구 체인을 설치하고 관리하며, 홈 디렉터리 .cargo/bin
에 설치된 도구 그룹을 통해 그것들을 대리한다.
rustup 명령을 설치하면 rustc
와 cargo
컴파일러를 쉽게 관리할 수 있습니다.Rustop은 또한 Rust의 야간 버전, 안정적인 버전과 테스트 버전 사이를 편리하게 전환할 수 있다.
Rust and WebAssembly에는 안정적인 버전의 Rust(1.30 이상 버전)가 있습니다.최신 혜택을 모두 얻을 수 있도록 nightly
버전으로 전환합니다.
야간 버전으로 전환하려면 실행해야 합니다
$ rustup default nightly
위의 명령은 기본 Rust 컴파일러를 nightly
버전으로 전환합니다.~/.cargo/bin
의 rustc 에이전트는 안정적인 컴파일러가 아닌 야간 컴파일러를 실행합니다.
nightly의 최신 버전으로 업데이트하려면 실행할 수 있습니다
$ rustup update
일단 업데이트에 성공하면 우리는 실행할 수 있다
$ rustc --version
rustc 1.42.0-nightly (da3629b05 2019-12-29)
Rust to WebAssembly 컴파일러는 기본 rustc 컴파일러에 내장되어 있습니다.이는 위의 도구 체인 설정이 이제 Rust 코드를 WebAssembly 모듈로 컴파일할 수 있음을 의미합니다.우리는 행동 중에 이 점을 보게 한다.
그물 프레임 총성 녹식
WebAssembly가 게임 응용 프로그램, 온라인 IDE 및 기타 자원 집약형, 메모리 소모형 응용 프로그램에 가장 적합하다고 생각한다면, 기술적으로 정확합니다.그러나 우리도 간단한 응용 프로그램에서 Web Assembly의 장점을 얻을 수 있다.
우리가 개발한 일반 응용 프로그램 (즉 항상 빠른 응답이 필요하지 않은 응용 프로그램) 에는 일부 성능 조정이 필요할 것이다.때때로 우리는 일부 브라우저에서만 실행되고 다른 브라우저에서만 실행되지 않는 보기 흉한 파스타 코드를 삭제해야만 한다.WebAssembly에서 옵션을 제공합니다.
Rust와 WebAssembly가 있으면 더욱 빠르고 일치하는 WebAssembly 코드로 이 구역을 쉽게 수리하고 응용 프로그램을 사용할 수 있다.
현재 Rust for WebAssembly 중 도구가 가장 좋습니다.Rust를 사용하면 Rust가 있는 전체 응용 프로그램(즉 전면과 후면)을 만들 수도 있고 응용 프로그램의 일부분에 Rust를 사용할 수도 있습니다.
Rust 컴파일러는 아래
를 사용하여 Rust 소스 코드를 WebAssembly 모듈로 변환합니다.
대상에 대한 자세한 내용LLVM
여기 있다
타겟은 M32 알 수 없음
Rust의 도구 체인을 사용하여 WebAssembly 모듈을 만들기 위해 targetwasm32-unknown-unknown
을 사용합니다.
여기unknown-unknown
지시 컴파일러 코드는 모든 기계에서 컴파일되고 모든 기계에서 실행될 수 있습니다.이것은 모든 시스템에서 실행되는 WebAssembly 모듈을 생성합니다.
우리는 사용할 수 있다
$ rustup target add wasm32-unknown-unknown
wasm32-unknown-unknown
목표는 제로 운행 시간과 도구 체인 발자국을 증가시켰다.전자는 목표 가설wasm32-unknown-unknown
개의 지령집만 존재하기 때문이다.후자는 컴파일할 때 특수한 컴파일러, 도구 체인, 사용자 정의 링크가 필요하지 않기 때문이다.
코드를 좀 쓰다✍️
카고로 새 프로젝트를 만듭니다.
$ cargo new --lib car_fib
Created library `car_fib` package
car fib라는 새 항목이 생성되었습니다.wasm32
로고는 화물에 기본 바이너리 항목이 아닌 새로운 라이브러리 항목을 만들라고 알립니다.
The binary project will produce the executable or the actual binaries that will run. In our case, we are just building a library and then create WebAssembly modules out of it.
우리가 가장 좋아하는 텍스트 편집기를 회전시키고 다음 내용으로 --lib
의 내용을 바꿉니다.
#[no_mangle]
fn add(x: i32, y:i32) -> i32 {
x + y
}
src/lib.rs
주석 알림 컴파일러는 라이브러리를 생성할 때 이름을 손상시키지 마십시오.
컴파일러가 컴파일하고 있는 박스 종류를 지정해야 합니다.생성된 #[no_mangle]
파일에서 crate-type
를 지정할 수 있습니다.Cargo.toml
를 열고 상자 유형 정보를 추가합니다.
[package]
name = "car_fib"
version = "0.1.0"
authors = ["Sendil Kumar"]
[lib]
crate-type = ["cdylib"]
Cargo.toml
판자 상자 유형 생성cdylib
.다른 언어에서 라이브러리를 불러와야 할 때 이 동적 시스템 라이브러리를 사용합니다.
Rust to WebAssembly 모듈을 컴파일합니다.
$ cargo build --target wasm32-unknown-unknown
dynamic system library
rust컴파일러를 호출합니다.Rust 컴파일러는 지정된 대상cargo build
을 사용합니다.WebAssembly 모듈wasm32-unknown-unknown
이 내부에 생성됩니다.
HTML 파일 만들기
$ touch index.html
/target/wasm32-unknown-unknown/
에 다음을 추가합니다.
<script>
(async () => {
const bytes = await fetch("target/wasm32-unknown-unknown/debug/car_fib.wasm");
const response = await bytes.arrayBuffer();
const result = await WebAssembly.instantiate(response, {});
console.log(result.instance.exports.add(10,3));
})();
</script>
우리는 여기서
를 사용하여 문법을 더욱 우아하게 하고 상하문을 이해하기 쉽게 했다.
우선, 우리는 index.html
를 사용하여 WebAssembly 모듈을 가져옵니다.fetch
해석과 약속한 것을 되돌려줍니다.bytes.arrayBuffer()
함수를 사용하여 WebAssembly 코드를 컴파일하고 인스턴스화할 수 있습니다.결과 객체에는 내보내기 방법이 있습니다.
예상한 대로 출력ArrayBuffer
이 출력됩니다.
비동기 대기
무슨 일이 있었죠?
여기서 cargo build 명령은 rust 컴파일러를 호출하여 rust 코드를 MIR(중간 표시)로 컴파일한 다음 LLVM-IR로 컴파일합니다.그런 다음 생성된 LLVM IR을 WebAssembly 모듈로 변환합니다.
주의해야 할 것은 우리가 이곳에서 사용하지 않았다는 것이다. 모든 것은rust컴파일러가 스스로 처리한 것이다.
다른 함수를 추가합시다.Rust가 있는 피보나치 생성기를 만들고 브라우저에서 실행할 수 있습니다.
열기WebAssembly.instantiate
, 아래 내용으로 모든 내용을 대체합니다
#[no_mangle]
fn fibonacci(num: i32) -> i32 {
match num {
0 => 0,
1 => 1,
_ => fibonacci(num-1) + fibonacci(num-2),
}
}
13
로 구성합니다.
마지막으로 교체car_fib.rs
하면 우리는 덧셈이 아니라 피보나치라고 부른다.
<script>
(async () => {
const bytes = await fetch("target/wasm32-unknown-unknown/debug/car_fib.wasm");
const response = await bytes.arrayBuffer();
const result = await WebAssembly.instantiate(response, {});
console.log(result.instance.exports.fibonacci(20));
})();
</script>
이제 HTML 서버를 시작하여 브라우저 콘솔에서 피보나치 값을 확인합니다.
다음 블로그에서는 JavaScript와 WebAssembly 모듈 사이에 다양한 값을 전달하는 방법을 살펴봅니다.
만약 네가 이 글을 좋아한다면, 너는 아마도 나의 녹슨 것과 인터넷 조립에 관한 책을 좋아할 것이다.보기 emscripten compiler
👇 환매 협의👇
여기/
센델 쿠마온
품질용 녹과 그물 모양 부품 - 소개
rustwasm 소개
더 많은 것을 탐색할 흥미가 있다...
링크에 대한 자세한 내용
async awaithere에 대한 자세한 내용을 보실 수 있습니다.
토론//here/💻 GitHub/✍️ Blog
만약 당신이 이 문장을 좋아한다면, 좋아하거나 평론을 남겨 주세요.❤️
Reference
이 문제에 관하여(품질용 녹과 그물 모양 부품 - 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/sendilkumarn/rust-and-webassembly-for-masses-introduction-1034
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
The Rust language is designed to guide you naturally towards reliable goal that is efficient in terms of speed and memory usage - Nicholas Matsakis and Aaron Turon
Overall Rust ensures safety, concurrency, and makes you stay away from risks, crashes, and vulnerabilities.
Cargo downloads your Rust project's dependencies and compiles your project. - Cargo team
$ curl https://sh.rustup.rs --sSf | sh
$ rustc --version
rustc 1.40.0 (73528e339 2019-12-16)
Note that you will require C++ build tools for Visual Studio 2013 or later. You can install them from here
$ rustup default nightly
$ rustup update
$ rustc --version
rustc 1.42.0-nightly (da3629b05 2019-12-29)
$ rustup target add wasm32-unknown-unknown
$ cargo new --lib car_fib
Created library `car_fib` package
The binary project will produce the executable or the actual binaries that will run. In our case, we are just building a library and then create WebAssembly modules out of it.
#[no_mangle]
fn add(x: i32, y:i32) -> i32 {
x + y
}
[package]
name = "car_fib"
version = "0.1.0"
authors = ["Sendil Kumar"]
[lib]
crate-type = ["cdylib"]
$ cargo build --target wasm32-unknown-unknown
$ touch index.html
<script>
(async () => {
const bytes = await fetch("target/wasm32-unknown-unknown/debug/car_fib.wasm");
const response = await bytes.arrayBuffer();
const result = await WebAssembly.instantiate(response, {});
console.log(result.instance.exports.add(10,3));
})();
</script>
#[no_mangle]
fn fibonacci(num: i32) -> i32 {
match num {
0 => 0,
1 => 1,
_ => fibonacci(num-1) + fibonacci(num-2),
}
}
<script>
(async () => {
const bytes = await fetch("target/wasm32-unknown-unknown/debug/car_fib.wasm");
const response = await bytes.arrayBuffer();
const result = await WebAssembly.instantiate(response, {});
console.log(result.instance.exports.fibonacci(20));
})();
</script>
Reference
이 문제에 관하여(품질용 녹과 그물 모양 부품 - 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sendilkumarn/rust-and-webassembly-for-masses-introduction-1034텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)