0Pricing
Learn Rust Coding · Ders

Rust'tan WebAssembly'ye (WASM)

Rust kodunu WebAssembly'ye derleyerek yüksek performanslı modüllerin web tarayıcılarında ve diğer WASM çalışma zamanlarında çalışmasını sağlayın.

Rust'tan WebAssembly'ye (WASM), CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 3 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 3 dersten oluşur.

WebAssembly (WASM) nedir?

WebAssembly veya WASM, yığıt tabanlı bir sanal makine için ikili yönerge biçimidir. Rust, C/C++ ve Go gibi üst düzey diller için taşınabilir bir derleme hedefi olarak tasarlanmıştır.

Bunu, web tarayıcılarında ve diğer ortamlarda verimli bir şekilde çalışan, düşük düzeyli ve assembly benzeri bir dil olarak düşünebilirsiniz. Performans açısından kritik kodları yerel kodlara yakın hızlarda çalıştırmanızı sağlar.

Rust'un WASM İçin Avantajları

Rust, kendine özgü güçlü yönleri sayesinde WebAssembly geliştirme için mükemmel bir seçimdir:

  • Performans: Rust, C/C++'a yakın hızıyla tanınır.
  • Bellek Güvenliği: Rust'un sahiplik sistemi, çöp toplayıcı olmadan yaygın hataları önler.
  • Küçük İkili Dosyalar: Rust'un asgari çalışma zamanı, derli toplu WASM modülleri oluşturur.
  • Araç Desteği: wasm-pack ve wasm-bindgen gibi araçlarla mükemmel destek sunar.

WASM Araçlarınızı Kurma

Rust kodunu WebAssembly'e derlemek için öncelikle wasm-pack kullanacaksınız. Bu, derleme sürecinin tamamını yöneten bir komut satırı aracıdır.

Ayrıca WASM modülleri ile JavaScript arasındaki üst düzey etkileşimleri kolaylaştıran bir Rust kasası ve CLI aracı olan wasm-bindgen aracını da kullanacaksınız.

wasm-pack aracını kurmak için terminalinizi açın ve şu komutu çalıştırın:

cargo install wasm-pack

İlk WASM Projeniz

WebAssembly için özelleştirilmiş yeni bir Rust projesi oluşturalım. Belirli bir şablonla cargo generate kullanacağız:

cargo install cargo-generate
cargo generate --git https://github.com/rustwasm/wasm-pack-template

Projenize bir ad vermek için yönergeleri izleyin. Bu işlem, WASM koduna hazır bir lib.rs dosyası ve basit bir web arayüzü için bir www dizini oluşturur.

JavaScript İçin Rust İşlevi

Bir Rust işlevini JavaScript'ten çağrılabilir hâle getirmek için wasm-bindgen kasasındaki #[wasm_bindgen] özniteliğini kullanırız.

Bu öznitelik, wasm-bindgen aracına JavaScript'in Rust işlevinizle etkileşim kurması için gereken bağlayıcı kodu oluşturmasını söyler.

use wasm_bindgen::prelude::*;

// This attribute makes the `greet` function available to JavaScript.
#[wasm_bindgen]
pub fn greet(name: &str) -> String {
    format!("Hello, {}!", name)
}

// In a WASM library, `main` is not used. This code is compiled to a .wasm module.

WASM'ı JavaScript ile Entegre Etme

Rust kodunuzu yazdıktan sonra wasm-pack build kullanarak bunu bir WASM modülüne derlersiniz. Bu komut, .wasm dosyanızı ve JS bağlayıcı kodunu içeren bir pkg dizini oluşturur.

Ardından JavaScript kodunuzda dışa aktarılan Rust işlevlerini kolayca içe aktarabilir ve kullanabilirsiniz:

// www/index.js (simplified)
import { greet } from "../pkg/your_project_name"; // Adjust path

// Call the Rust function
const message = greet("CoddyKit Learner");
console.log(message); // Outputs: "Hello, CoddyKit Learner!"

// You'd typically connect this to HTML elements.

Rust'tan JavaScript Çağırma

Rust, JavaScript işlevlerini de çağırabilir. Bunları bir extern "C" bloğunda bildirir ve JS genel nesnelerine veya işlevlerine eşlemek için #[wasm_bindgen] kullanırsınız.

js_namespace bağımsız değişkeni, JavaScript ortamında işlevin nerede bulunacağını belirtmenizi sağlar; örneğin console nesnesinde.

use wasm_bindgen::prelude::*;

#[wasm_bindgen]
extern "C" {
    // Import JS console.log as a Rust function named 'log'
    #[wasm_bindgen(js_namespace = console)]
    fn log(s: &str);

    // You can import other JS functions too
    #[wasm_bindgen(js_name = alert)]
    fn js_alert(s: &str);
}

#[wasm_bindgen]
pub fn log_and_alert_from_rust(message: &str) {
    log(&format!("Rust log: {}", message));
    js_alert(&format!("Rust alert: {}", message));
}

Rust ile JS Arasında Dizeleri Aktarma

wasm-bindgen, sayılar ve boolean değerleri gibi yaygın veri türlerini akıllı bir şekilde işler. Dizeler için UTF-8 kodlamasını kullanır.

Rust'tan bir &str veya String aktardığınızda wasm-bindgen bunu bir JavaScript String değerine dönüştürür; tersi yönde de aynı işlemi yapar. Bu soyutlama, birlikte çalışmayı sorunsuz hâle getirir.

use wasm_bindgen::prelude::*;

#[wasm_bindgen]
pub fn uppercase_and_reverse(s: String) -> String {
    s.to_uppercase().chars().rev().collect()
}

// This function takes a String, processes it, and returns a new String.
// wasm-bindgen handles the conversion to/from JS strings.

Tarayıcı Dışında WASM

Web tarayıcılarıyla sıkça ilişkilendirilse de WebAssembly yalnızca tarayıcılarla sınırlı değildir! WASM çalışma zamanları birçok ortam için mevcuttur ve yeni olanaklar sunar:

  • Sunucusuz İşlevler: Hızlı ve yalıtılmış işlevleri dağıtın.
  • Blok zinciri: Akıllı sözleşmeleri çalıştırın.
  • Eklentiler/Genişletmeler: Uygulamaları güvenli bir şekilde genişletin.
  • Masaüstü Uygulamaları: Yüksek performanslı modülleri uygulamalara gömün.

Bu, Rust'un kullanım alanını geleneksel sistem programlamasının çok ötesine taşır.

WebAssembly Temel Kavramları

Rust ve WebAssembly konusundaki anlayışınızı kontrol edelim.

Özet: Rust'tan WASM'a

Rust'un performansını ve güvenliğini WebAssembly'e taşımayı öğrendiniz!

  • WASM, derlenmiş kod için hızlı ve taşınabilir bir çalışma zamanı sunar.
  • Rust; performansı, küçük ikili dosyaları ve güvenliği sayesinde WASM konusunda mükemmeldir.
  • wasm-pack ve wasm-bindgen gibi araçlar geliştirme sürecini kolaylaştırır.
  • Rust işlevlerini kolayca JavaScript'e aktarabilir ve JavaScript işlevlerini Rust'a içe aktarabilirsiniz.
  • WASM'ın kullanım alanları yalnızca web tarayıcılarıyla sınırlı değildir.

Rust ile güçlü, yüksek performanslı web ve web dışı uygulamalar geliştirmek için keşfetmeye devam edin!

Sıkça Sorulan Sorular

“Rust'tan WebAssembly'ye (WASM)” dersi ücretsiz mi?

Evet — “Rust'tan WebAssembly'ye (WASM)” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 3 dersten oluşur.

“Rust'tan WebAssembly'ye (WASM)” dersinde ne öğreneceğim?

Rust kodunu WebAssembly'ye derleyerek yüksek performanslı modüllerin web tarayıcılarında ve diğer WASM çalışma zamanlarında çalışmasını sağlayın. Learn Rust Coding ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 2. dersidir.

“Rust'tan WebAssembly'ye (WASM)” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Learn Rust Coding dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Yabancı İşlev Arayüzü (FFI)
  2. Rust'tan WebAssembly'ye (WASM)
  3. Karşılaştırmalı Ölçüm ve Performans Ayarlama
← Learn Rust Coding Sayfasına Dön