27 पॉइंट द्वारा xguru 2024-10-05 | 4 टिप्पणियां | WhatsApp पर शेयर करें
  • Tauri सभी प्रमुख डेस्कटॉप (macOS, Linux, Windows) और मोबाइल (iOS, Android) प्लेटफ़ॉर्म के लिए छोटे और तेज़ बाइनरी बनाने का एक फ़्रेमवर्क है
  • यह किसी भी फ्रंटएंड फ़्रेमवर्क को इंटीग्रेट कर सकता है जो HTML, JavaScript, CSS में कंपाइल होता है, और ज़रूरत पड़ने पर बैकएंड लॉजिक के लिए Rust, Swift, Kotlin जैसी भाषाओं का उपयोग किया जा सकता है
  • यह व्यापक JavaScript API प्रदान करता है, इसलिए अधिकांश मामलों में Rust, Swift, Kotlin में कोड लिखने की ज़रूरत नहीं पड़ती

Tauri का उपयोग कब करना चाहिए?

  • जब आप सभी प्लेटफ़ॉर्म के लिए एक सिंगल UI codebase चाहते हों
  • जब आप अधिकतम संभव उपयोगकर्ताओं तक उनके प्लेटफ़ॉर्म (जैसे Windows, macOS, Linux, Android, iOS) पर पहुँचना चाहते हों
  • जब आप फ्रंटएंड वेब डेवलपर हों और native application लिखना चाहते हों
  • जब आप Rust डेवलपर हों और शानदार UI के साथ application लिखना चाहते हों, साथ ही Rust में भी लिख पाने का विकल्प चाहते हों
  • जब आपके पास वेब डेवलपर टीम हो और आप कम शुरुआती निवेश के साथ native application मार्केट में विस्तार करना चाहते हों
  • जब आपके पास Rust डेवलपर टीम हो और आप सब कुछ Rust में लिखना चाहते हों

2.0 के फायदे और सुधार

Getting started अनुभव में सुधार

  • यह developer experience (DX) को महत्व देता है और इस शुरुआती प्रक्रिया को अंतिम application बनाने और deploy करने जितना ही smooth बनाने की कोशिश करता है
  • create-tauri-app(CTA) नाम का एक प्रोजेक्ट बनाया गया है, जिससे डेवलपर शुरुआत से शुरू करके कुछ घंटों में नहीं बल्कि कुछ ही मिनटों में चलती हुई Tauri app पा सकते हैं

Hot-Module Replacement

  • 1.x में पहले से development process को बेहतर बनाने के लिए सोचे गए hot module replacement (HMR) को मोबाइल डिवाइस और emulator तक बढ़ाया गया है
  • application के frontend में होने वाले सभी बदलावों के लिए पूरे application को दोबारा build करने की ज़रूरत नहीं होती, और development के दौरान आप रीयल-टाइम में देख सकते हैं कि यह डिवाइस या operating system पर कैसा दिखेगा

प्लगइन

  • Tauri 2.0 में एक अधिक उन्नत plugin system बनाया गया है। पहले की कई functionalities को official plugins में शिफ्ट किया गया है ताकि community के लिए Tauri में योगदान देना आसान हो सके
  • plugin system मोबाइल plugins को भी support करता है। iOS पर Swift में और Android पर Kotlin में native code लिखा या reuse किया जा सकता है, annotation (@Command on Android) का उपयोग किया जा सकता है, subclass (YourPluginClass: Plugin on iOS) implement किया जा सकता है, या Rust-आधारित Tauri command से Swift या Kotlin code कॉल करके सीधे Tauri frontend में functions expose किए जा सकते हैं
  • उपलब्ध official plugins Tauri के major version को follow करते हैं
    • Autostart: सिस्टम शुरू होते ही app अपने-आप चलाना
    • Barcode Scanner: मोबाइल app में QR code, EAN-13 आदि barcode स्कैन करना
    • Biometric: Android और iOS पर biometric authentication prompt
    • Clipboard: सिस्टम clipboard को पढ़ना और लिखना
    • Command Line Interface (CLI): command line interface में arguments parse करना
    • Deep Linking: Tauri application को URL का default handler बनाना
    • Dialog: file खोलने और save करने, तथा message dialog के लिए native system dialogs
    • File System: file system access
    • Global Shortcut: global shortcuts register करना
    • HTTP Client: Rust में लिखे गए HTTP client तक access
    • Localhost: production app में localhost server का उपयोग
    • Logging: configurable logging
    • NFC: Android और iOS पर NFC tag पढ़ना और लिखना
    • Notifications: उपयोगकर्ताओं को native notifications भेजना
    • OS Information: operating system की जानकारी पढ़ना
    • Persisted Scope: runtime scope changes को file system में बनाए रखना
    • Positioner: window को सामान्य स्थानों पर ले जाना
    • Process: current process तक access
    • Shell: default application का उपयोग करके files और URL को manage करना और child process बनाने के लिए system shell तक access
    • Single Instance: यह सुनिश्चित करना कि एक समय में Tauri app की केवल एक instance ही चले
    • SQL: sqlx के जरिए frontend को SQL database से communicate करने वाला interface देने वाला Tauri plugin
    • Store: persistent key-value storage
    • Stronghold: encrypted secure database
    • System Tray
    • Updater: Tauri application के in-app updates
    • Upload: HTTP के माध्यम से file upload
    • Websocket: JavaScript में Rust client का उपयोग करके WebSocket connection खोलना
    • Window Customization
    • Window State: window का size और position बनाए रखना

Allowlist का अंत, Allowlist अमर रहे

  • allowlist अब मौजूद नहीं है। इसकी limits तक बहुत जल्दी पहुँचा जा रहा था
  • यह केवल Tauri core functionalities के लिए बनाया गया था, लेकिन यह Tauri की सभी APIs को कवर नहीं करता था
  • नया system न केवल Tauri की सभी core API surfaces को कवर करता है, बल्कि app और plugin developers को एकीकृत approach के साथ अपना access control और scoping लागू करने की भी सुविधा देता है
  • permissions - "Tauri commands के लिए on-off toggle", scopes - "Tauri commands के लिए parameter validation", capabilities - "Windows और WebView के साथ permissions और scopes को जोड़ना" का उपयोग करके एक flexible लेकिन उपयोग में आसान access control system बनाया गया है
  • named permissions या scoped files बनाई जा सकती हैं और उन्हें दूसरे named permissions या scopes के साथ reuse और combine किया जा सकता है
  • इससे अधिक granular और descriptive sets बनाए जा सकते हैं जिनमें कई सरल या जटिल permissions और scopes शामिल हों
  • इस अतिरिक्त functionality की वजह से Tauri core अब यह समझ सकता है कि frontend WebView से command invocation message को command function तक पहुँचने देना है या नहीं

Inter-Process Communication (IPC) का पुनर्लेखन

  • IPC layer को फिर से लिखा गया है, जिससे अब लंबे समय से चाही जा रही Raw Payload feature को support किया गया है और अंदरूनी काम करने का तरीका बदल गया है
  • पहले सभी IPC payloads को json में serialize और deserialize किया जाता था, जिससे overhead आता था। frontend और backend के बीच कुछ kilobytes से ज़्यादा डेटा भेजे जाने पर यह साफ़ तौर पर महसूस होता था
  • नया system Raw Request को support करता है। यह raw bytes का सीधे उपयोग करने या अपनी खुद की (de)serialization process (जैसे bson, protobuf, avro आदि) इस्तेमाल करने की सुविधा देता है, जिससे backend से frontend या उसके उलट बड़े पैमाने पर डेटा ट्रांसफर की गति बढ़ती है

Deployment guide

  • Tauri 2.0 में मोबाइल ecosystem और community contributions की वजह से deployment diversity काफ़ी बढ़ गई है
  • Apple Appstore, Google Play, Microsoft Store, CrabNebula Cloud, Flathub, Snapcraft, AUR और अन्य deployment formats पर कैसे deploy करना है, इसके official guides deployment documentation में शामिल हैं

4 टिप्पणियां

 
plumpmath 2024-10-10

https://github.com/DioxusLabs/dioxus

अगर आप सिर्फ Rust में डेवलप कर रहे हैं, तो यह ज़्यादा बेहतर लग रहा है। अभी पता चला। Tauri पर फोकस करने वाला था, लेकिन जब पता चला कि सिर्फ एक ही language Rust से पूरा development किया जा सकता है, तो अब यही~* कहते हैं कि IPC से भी तेज़ native तक सीधे access मिल जाता है।

 
xguru 2024-10-10

Dioxus - React से प्रभावित Rust के लिए UI लाइब्रेरी
जब मैंने इसे पहले एक बार पोस्ट किया था, तब शायद यह 0.3 वर्ज़न था, इसलिए इस पर कुछ मुश्किलें होने की टिप्पणियाँ थीं.

Dioxus 0.5: Rust से विकसित वेब, डेस्कटॉप और मोबाइल ऐप्स
अब तो यह 0.5 है, इसलिए शायद चीज़ें बदल गई होंगी.

 
tsboard 2024-10-05

यह सचमुच बेहद शानदार खबर है। लगता है कि यह Windows के लिए native app development में भी उपयोगी होगा, और mobile पर भी इसका बहुत अच्छा इस्तेमाल किया जा सकेगा।

 
bus710 2024-10-05

IPC को फिर से लिखा गया है.... वीडियो जैसी बड़ी data भेजने के लिए यह अच्छा रहेगा।