റസ്റ്റ് കോർ ആർക്കിടെക്ചർ
ആൻഡ്രോയിഡിനും iOS-നും ഇടയിൽ സമ്പൂർണ്ണ തുല്യത ഉറപ്പുനൽകുന്നതിനും ഏറ്റവും ഉയർന്ന പ്രകടനം കൈവരിക്കുന്നതിനും, Tracelet-ൻ്റെ പ്രധാന ലോജിക് പൂർണ്ണമായും Rust എന്നതിൽ എഴുതിയിരിക്കുന്നു. ഇതിൽ സ്റ്റേറ്റ് മെഷീൻ, HTTP സമന്വയ എഞ്ചിൻ, SQLite പെർസിസ്റ്റൻസ് ലെയർ, ബാറ്ററി ബഡ്ജറ്റ് കണക്കുകൂട്ടലുകൾ എന്നിവ ഉൾപ്പെടുന്നു.
എന്തുകൊണ്ട് തുരുമ്പ്?
റസ്റ്റിൽ കോർ എഞ്ചിൻ എഴുതുന്നത് ക്രോസ്-പ്ലാറ്റ്ഫോം പശ്ചാത്തല നിർവ്വഹണത്തിലെ നിരവധി നിർണായക വെല്ലുവിളികൾ പരിഹരിക്കുന്നു:
- പൂജ്യം പൊരുത്തക്കേടുകൾ: പ്രത്യേക സ്വിഫ്റ്റ്, കോട്ട്ലിൻ നടപ്പാക്കലുകളേക്കാൾ, ഒരൊറ്റ, പങ്കിട്ട കോഡ്ബേസിനെ ആശ്രയിക്കുന്നതിലൂടെ, iOS, Android എന്നിവ എല്ലാ സാഹചര്യങ്ങളിലും ഒരേപോലെ പ്രവർത്തിക്കുമെന്ന് ഞങ്ങൾ ഉറപ്പാക്കുന്നു. ഒരു ബഗ് പരിഹരിച്ചാൽ, അത് എല്ലായിടത്തും പരിഹരിക്കപ്പെടും.
- നിർഭയമായ കൺകറൻസി: പശ്ചാത്തല സമന്വയ എഞ്ചിൻ കനത്ത മൾട്ടിത്രെഡ് ലോഡുകളിൽ കുറ്റമറ്റ രീതിയിൽ പ്രവർത്തിക്കുന്നു. റസ്റ്റിൻ്റെ കർശനമായ കംപൈലർ ഡാറ്റ-റേസ് സ്വാതന്ത്ര്യം ഉറപ്പുനൽകുന്നു, ലൊക്കേഷനുകൾ റെക്കോർഡുചെയ്യുകയും പശ്ചാത്തല ത്രെഡുകളിൽ ഒരേസമയം അപ്ലോഡ് ചെയ്യുകയും ചെയ്യുമ്പോൾ കൺകറൻസി ബഗുകൾ ഒഴിവാക്കുന്നു.
- പ്രകടനവും സുരക്ഷയും: റസ്റ്റ് സി-ലെവൽ പ്രകടനത്തോടെയും പൂജ്യത്തിന് സമീപമുള്ള മെമ്മറി ഫൂട്ട്പ്രിൻ്റോടെയും പ്രവർത്തിക്കുന്നു, ഇത് ബാറ്ററി പരിമിതമായ പശ്ചാത്തല നിർവ്വഹണത്തിന് അനുയോജ്യമാക്കുന്നു. മാലിന്യ ശേഖരണമില്ലാതെ മെമ്മറി സുരക്ഷ ഉറപ്പുനൽകുന്നു, നൾ പോയിൻ്ററുകൾ അല്ലെങ്കിൽ മെമ്മറിക്ക് പുറത്തുള്ള പിശകുകൾ കാരണം പശ്ചാത്തല എഞ്ചിൻ ഒരിക്കലും തകരാറിലാകില്ലെന്ന് ഉറപ്പാക്കുന്നു.
ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു: UniFFI ബൈൻഡിംഗുകൾ
റസ്റ്റും നേറ്റീവ് പ്ലാറ്റ്ഫോമുകളും തമ്മിലുള്ള വിടവ് നികത്താൻ Tracelet മോസില്ലയുടെ UniFFI (യൂണിവേഴ്സൽ ഫോറിൻ ഫംഗ്ഷൻ ഇൻ്റർഫേസ്) ഉപയോഗിക്കുന്നു.
- നിർവ്വചനം: റസ്റ്റിൽ ഞങ്ങൾ കോർ API നിർവചിക്കുന്നു (ഉദാ. ട്രാക്കിംഗ് ആരംഭിക്കുന്നതിനും ഡാറ്റ സമന്വയിപ്പിക്കുന്നതിനും അല്ലെങ്കിൽ ലൊക്കേഷൻ അപ്ഡേറ്റുകൾ കൈകാര്യം ചെയ്യുന്നതിനുമുള്ള രീതികൾ).
- ജനറേഷൻ: UniFFI സ്വപ്രേരിതമായി റസ്റ്റ് കോഡ് പാഴ്സ് ചെയ്യുകയും iOS-നായി സുരക്ഷിതവും ഭാഷാപരമായ Swift ബൈൻഡിംഗുകളും Android-നായി Kotlin ബൈൻഡിംഗുകളും സൃഷ്ടിക്കുകയും ചെയ്യുന്നു.
- നിർവ്വഹണം: Flutter പ്ലഗിൻ നേറ്റീവ് iOS/Android കോഡിലേക്ക് വിളിക്കുമ്പോൾ, നേറ്റീവ് കോഡ് UniFFI- ജനറേറ്റഡ് ബൈൻഡിംഗുകളെ വിളിക്കുന്നു, അത് അന്തർലീനമായ റസ്റ്റ് ലോജിക് തടസ്സമില്ലാതെ നടപ്പിലാക്കുന്നു.
ബൈൻഡിംഗുകൾ സ്വയമേവ ജനറേറ്റുചെയ്യുന്നതിനാൽ, മാനുവൽ ജെഎൻഐ (ജാവ നേറ്റീവ് ഇൻ്റർഫേസ്) അല്ലെങ്കിൽ ഒബ്ജക്റ്റീവ്-സി ബ്രിഡ്ജിംഗ് കോഡ് പരിപാലിക്കാൻ ഇല്ല. ഇത് പൂർണ്ണമായും തരം സുരക്ഷിതമാണ്.
മുൻകൂട്ടി സമാഹരിച്ച ബൈനറികൾ (റസ്റ്റ് ടൂൾചെയിൻ ആവശ്യമില്ല)
റസ്റ്റ് ടൂൾചെയിൻ ഇൻസ്റ്റാൾ ചെയ്യാനും ക്രോസ്-കംപൈലേഷൻ ടാർഗെറ്റുകൾ കോൺഫിഗർ ചെയ്യാനും ദൈർഘ്യമേറിയ ബിൽഡ് ടൈമുകൾ സഹിക്കാനും ഡവലപ്പർമാരെ നിർബന്ധിക്കുന്നതാണ് മൊബൈൽ ഡെവലപ്മെൻ്റിലെ റസ്റ്റിൻ്റെ ഒരു പൊതു വേദന.
പ്രീ-കംപൈൽ ചെയ്ത ബൈനറികൾ വിതരണം ചെയ്തുകൊണ്ട് Tracelet ഇത് പരിഹരിക്കുന്നു.
നിങ്ങളുടെ Flutter പ്രോജക്റ്റിലേക്ക് tracelet പ്ലഗിൻ ചേർക്കുമ്പോൾ, നിങ്ങളുടെ മെഷീനിൽ Rust ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതില്ല. Tracelet-ൻ്റെ CI/CD പൈപ്പ്ലൈൻ ഓരോ റിലീസിനും നേറ്റീവ് ലൈബ്രറികൾ സ്വയമേവ നിർമ്മിക്കുകയും പ്രസിദ്ധീകരിക്കുകയും ചെയ്യുന്നു.
ആൻഡ്രോയിഡ് സമാഹാരം
- എല്ലാ പ്രധാന ആൻഡ്രോയിഡ് ആർക്കിടെക്ചറുകൾക്കുമായി (
arm64-v8a,armeabi-v7a,x86,x86_64) ഒരു നേറ്റീവ് പങ്കിട്ട ലൈബ്രറിയിലേക്ക് (.so) റസ്റ്റ് കോഡ് സമാഹരിച്ചിരിക്കുന്നു. - ഈ ലൈബ്രറികൾ, ജനറേറ്റ് ചെയ്ത കോട്ലിൻ ബൈൻഡിംഗുകൾക്കൊപ്പം, ഒരു ആൻഡ്രോയിഡ് ആർക്കൈവിലേക്ക് (
.aar) പാക്കേജ് ചെയ്തിരിക്കുന്നു. - നിങ്ങൾ ഫ്ലട്ടർ ആപ്പ് നിർമ്മിക്കുമ്പോൾ, Tracelet റിപ്പോസിറ്ററിയിൽ നിന്ന് മുൻകൂട്ടി നിർമ്മിച്ച
.aarഗ്രാഡിൽ സ്വയമേവ ഡൗൺലോഡ് ചെയ്യുന്നു.
iOS സമാഹാരം
- iOS ഉപകരണങ്ങൾക്കും (
arm64), സിമുലേറ്ററുകൾക്കുമായി (arm64,x86_64) ഒരു സ്റ്റാറ്റിക് ലൈബ്രറിയിലേക്ക് (.a) റസ്റ്റ് കോഡ് സമാഹരിച്ചിരിക്കുന്നു. - ഈ ലൈബ്രറികൾ ഒരു Apple XCFramework-ലേക്ക് (
TraceletCore.xcframework) ജനറേറ്റ് ചെയ്ത സ്വിഫ്റ്റ് ബൈൻഡിംഗുകൾക്കൊപ്പം ബണ്ടിൽ ചെയ്തിരിക്കുന്നു. - നിങ്ങൾ
pod installറൺ ചെയ്യുമ്പോൾ, CocoaPods (അല്ലെങ്കിൽ സ്വിഫ്റ്റ് പാക്കേജ് മാനേജർ) ടാഗ് ചെയ്ത GitHub റിലീസിൽ നിന്ന് മുൻകൂട്ടി കംപൈൽ ചെയ്തTraceletCore.xcframeworkനേരിട്ട് ഡൗൺലോഡ് ചെയ്യുന്നു.
ഈ പ്രീ-കംപൈൽ ചെയ്ത വിതരണം, നിങ്ങളുടെ ഫ്ലട്ടർ ബിൽഡുകൾ മിന്നൽ വേഗത്തിൽ നിലനിൽക്കുമെന്നും ഇഷ്ടാനുസൃത റസ്റ്റ് സജ്ജീകരണങ്ങൾ ആവശ്യമില്ലാതെ തന്നെ നിങ്ങളുടെ CI/CD പൈപ്പ് ലൈനുകൾ ബോക്സിന് പുറത്ത് പ്രവർത്തിക്കുമെന്നും ഉറപ്പാക്കുന്നു.