WebAssembly और Swift के साथ काम करना: A से Z तक

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

WebAssembly और Swift का परिचय

\n

WebAssembly (WASM) एक निम्न-स्तरीय बाइनरी निर्देश प्रारूप है जो विभिन्न भाषाओं (C, C++, Rust, Swift) में लिखे कोड को ब्राउज़र और उसके बाहर नेटिव गति के करीब चलाने की अनुमति देता है। iOS और macOS प्लेटफ़ॉर्म पर Swift डेवलपर्स के लिए, WebAssembly के साथ एकीकरण नई संभावनाएँ खोलता है: मौजूदा लाइब्रेरीज़ को स्थानांतरित करना, कम्प्यूटेशनल कार्यों को गति देना और क्रॉस-प्लेटफ़ॉर्म एकीकरण।

\n

इस लेख में, आप सीखेंगे कि वातावरण कैसे सेट करें, Swift कोड को WASM में कंपाइल करें और इसे नेटिव एप्लिकेशन से कैसे कॉल करें। हम व्यावहारिक उदाहरण देखेंगे और सामान्य गलतियों का विश्लेषण करेंगे।

\n\n

1. WebAssembly की मूल बातें: आर्किटेक्चर और लाभ

\n

WebAssembly एक वर्चुअल मशीन है जिसमें रैखिक मेमोरी और सख्त टाइपिंग है। मुख्य विशेषताएँ:

\n
    \n
  • सुरक्षा — पृथक निष्पादन (सैंडबॉक्स);
  • \n
  • प्रदर्शन — प्री-कंपाइलेशन के कारण नेटिव के करीब;
  • \n
  • कॉम्पैक्टनेस — बाइनरी .wasm प्रारूप कम जगह लेता है;
  • \n
  • एकीकरण — JavaScript, Swift, Rust से आसानी से कॉल किया जा सकता है।
  • \n
\n

Swift के लिए SwiftWasm प्रोजेक्ट मौजूद है, जो Swift कोड को WASM में कंपाइल करने की अनुमति देता है। यह कम्प्यूटेशनल मॉड्यूल बनाने के लिए विशेष रूप से उपयोगी है, जिनका उपयोग बाद में iOS ऐप्स में किया जाता है।

\n\n

2. SwiftWasm के लिए वातावरण सेट करना

\n

कोड लिखने से पहले, टूल्स इंस्टॉल करें। टर्मिनल खोलें और निष्पादित करें:

\n
# SwiftWasm इंस्टॉल करना (Homebrew के माध्यम से)\nbrew install swiftwasm/tap/swiftwasm\n\n# वर्शन जाँचें\nswift --version
\n

स्थानीय परीक्षण के लिए wasmtime की भी आवश्यकता होगी:

\n
brew install wasmtime
\n

एक नया Swift पैकेज बनाएँ:

\n
mkdir MyWasmApp && cd MyWasmApp\nswift package init --type executable
\n\n

3. Swift मॉड्यूल लिखना और WASM में कंपाइल करना

\n

एक सरल उदाहरण देखें — दो संख्याओं को जोड़ने का फ़ंक्शन। फ़ाइल Sources/main.swift को संपादित करें:

\n
@_extern(wasm, module: "env", name: "add")\nfunc add(_ a: Int, _ b: Int) -> Int\n\n@main\nstruct App {\n    static func main() {\n        let result = add(5, 3)\n        print("Result: \\(result)")\n    }\n}
\n

अब WASM में कंपाइल करें:

\n
swift build --triple wasm32-unknown-wasi
\n

सफल बिल्ड के बाद, फ़ाइल .build/wasm32-unknown-wasi/release/MyWasmApp.wasm दिखाई देगी। इसे wasmtime के माध्यम से चलाएँ:

\n
wasmtime .build/wasm32-unknown-wasi/release/MyWasmApp.wasm
\n

आपको आउटपुट देखना चाहिए: Result: 8।

\n\n

4. नेटिव iOS/macOS एप्लिकेशन में WebAssembly का एकीकरण

\n

अब सबसे दिलचस्प भाग — iOS पर Swift एप्लिकेशन से WASM फ़ंक्शन को कॉल करना। WasmKit (या WASMInterfaces) लाइब्रेरी का उपयोग करें।

\n

4.1 निर्भरता जोड़ना

\n

अपने iOS प्रोजेक्ट के Package.swift में जोड़ें:

\n
dependencies: [\n    .package(url: "https://github.com/swiftwasm/WasmKit.git", from: "0.1.0")\n],\ntargets: [\n    .target(\n        name: "YourApp",\n        dependencies: ["WasmKit"]\n    )\n]
\n

4.2 WASM मॉड्यूल लोड करना और कॉल करना

\n

.wasm फ़ाइल लोड करने और फ़ंक्शन कॉल करने का उदाहरण कोड:

\n
import WasmKit\n\nfunc callWasmAdd() throws {\n    guard let wasmURL = Bundle.main.url(forResource: "MyWasmApp", withExtension: "wasm") else {\n        fatalError("WASM file not found")\n    }\n    let wasmData = try Data(contentsOf: wasmURL)\n    let engine = WasmEngine()\n    let module = try engine.loadModule(wasmData)\n    let instance = try module.instantiate()\n    \n    // फ़ंक्शन add को कॉल करें\n    let result = try instance.exports["add"]?.function?.call([5, 3])\n    print("WASM result: \\(result?.first ?? 0)")\n}
\n

अपने प्रोजेक्ट में .was

ब्लॉग

पुस्तक अनुशंसाएँ