Termux மூலம் இயங்கும் Android ARM64 சாதனங்களில் Vite, “Illegal instruction” பிழையினால் செயலிழப்பதைத் தடுக்கும் ஒரு தீர்வை Rolldown குழு இப்போது இணைத்துள்ளது (merged). எந்தவொரு குறியீடும் (code) இயங்குவதற்கு முன்பே, டெவலப்பர்கள் தங்கள் பில்டுகள் (builds) செயலிழப்பதைப் பார்த்து பத்து மாதங்கள் கழித்து, இறுதியாக இந்தப் பிரச்சனை தீர்க்கப்பட்டுள்ளது. npm-இல் வரவிருக்கும் அடுத்த Rolldown வெளியீடு எந்தவிதத் தயக்கமுமின்றி நேரடியாகச் செயல்படும்.

இந்தச் செயலிழப்பு ஏன் முக்கியமானது

Termux பயனர்களை ஆண்ட்ராய்டு போன்களில் Linux போன்ற சூழலை இயக்க அனுமதிக்கிறது, மேலும் வளர்ந்து வரும் ஒரு சமூகத்தினர் இதைத் தங்களின் ஒரே மேம்பாட்டுப் பணிநிலையமாக (development workstation) நம்பியிருக்கிறார்கள். வங்கதேசம், நைஜீரியா மற்றும் இந்தோனேசியாவில், பல புரோகிராமர்கள் இணையப் பயன்பாடுகளை (web applications) எழுதவும் தொகுக்கவும் (bundle) லேப்டாப்பிற்குப் பதிலாகத் தொலைபேசியைப் பயன்படுத்துகின்றனர். எண்ணற்ற நவீன இணையதளங்களுக்குத் தேவையான வேகமான பில்ட் கருவியான Vite, அந்தப் பணிப்பாய்வின் (workflow) ஒரு முக்கியப் பகுதியாகும். Vite தொடங்க முயலும்போது, அது உடனடியாக “Illegal instruction” பிழையைச் சந்திக்கிறது, இதனால் எந்தவொரு JavaScript-உம் பகுப்பாய்வு (parsed) செய்யப்படுவதற்கு முன்பே அந்தச் செயல்முறை (process) நிறுத்தப்படுகிறது. ஒரு நேட்டிவ் லைப்ரரியை (native library) ஏற்றும்போது இது நடந்ததால், பிழைக்கான எந்த stack trace அல்லது log-உம் கிடைக்கவில்லை, இது டெவலப்பர்களைத் தீர்வு காண முடியாத ஒரு முட்டுச்சந்தியில் தவிக்கவிட்டது.

தொழில்நுட்ப முரண்பாடு

இதற்குக் காரணம் Rolldown-இன் நேட்டிவ் பைண்டிங்கில் (native binding) உள்ள ஒரு குறைந்த நிலை அனுமானம் (low-level assumption) ஆகும். அந்த குறியீடு, பிராசஸர் ARMv8.1 இன்ஸ்ட்ரக்ஷன்களை (instructions) ஆதரிக்க வேண்டும் என்று எதிர்பார்த்தது—இது புதிய சிப்களில் (chips) இருக்கும், ஆனால் Cortex-A53 போன்ற பரவலாகப் பயன்படுத்தப்படும் பல Android SoC-களில் இல்லை. அந்த இன்ஸ்ட்ரக்ஷன்கள் இல்லாத ஒரு சாதனம் லைப்ரரியை ஏற்ற முயலும்போது, CPU ஒரு illegal-instruction exception-ஐ உருவாக்குகிறது.

சிக்கலை மேலும் அதிகரித்தது என்னவென்றால், அந்தப் பிழையான குறியீடு mimalloc எனப்படும் ஒரு டிபென்டென்சியில் (dependency) இருந்தது; இது ஆதரிக்கப்படாத இன்ஸ்ட்ரக்ஷன்களின் பயன்பாட்டைத் தடுக்க வடிவமைக்கப்பட்ட ஒரு பாதுகாப்பு ஃபிளாக் (safety flag) கொண்ட மெமரி அலோகேட்டர் (memory allocator) ஆகும். அந்த ஃபிளாக் “standard Linux” சூழல்களில் மட்டுமே செயல்படும் வகையில் இருந்தது. ஆண்ட்ராய்டு, Linux கர்னலைப் பயன்படுத்தினாலும், தன்னை வேறு விதமாக அடையாளப்படுத்துகிறது, எனவே அந்தப் பாதுகாப்பு அம்சம் செயல்படவில்லை மற்றும் செயலிழப்பு நிகழ்ந்தது.

தீர்வு எவ்வாறு உருவாக்கப்பட்டது

இணைக்கப்பட்ட இந்த மாற்றம், mimalloc-இன் பாதுகாப்புச் சோதனையை விரிவுபடுத்தி, Android (மற்றும் FreeBSD) ஆகியவற்றை அதே பாதுகாப்பிற்குத் தேவையான தளங்களாக அங்கீகரிக்கிறது. டெவலப்பர்களை பேக்கேஜ்களை மீண்டும் உருவாக்கவோ அல்லது மாற்றவோ வற்புறுத்துவதற்குப் பதிலாக, லைப்ரரியை பேட்ச் (patch) செய்வதன் மூலம், இறுதிப் பயனர்களுக்கு எந்த கூடுதல் நடவடிக்கைகளும் இன்றி இந்தத் தீர்வு இணக்கத்தன்மையை (compatibility) மீட்டெடுக்கிறது.

டெவலப்பர்களுக்கு இதனால் கிடைக்கும் நன்மைகள்

  • தனிப்பயனாக்கப்பட்ட Termux பேக்கேஜ் தேவையில்லை. Rolldown-இன் நிலையான npm install இப்போது புதிய பாதுகாப்புச் சோதனையைப் பின்பற்றும் ஒரு பைனரியை (binary) வழங்கும்.
  • உடனடி சோதனை சாத்தியம். திறந்த நிலையில் உள்ள pull request-இல் இணைக்கப்பட்டுள்ள ஒரு preview build மூலம், ARM64 Android சாதனம் வைத்திருப்பவர்கள் இன்று இந்தத் தீர்வைச் சரிபார்க்க முடியும்; அதே நேரத்தில் அடுத்த அதிகாரப்பூர்வ Rolldown பதிப்பு npm-இல் வெளியாகும்.

மீதமுள்ள கவனிக்க வேண்டியவை

இந்தத் தீர்வு Rolldown பராமரிப்பாளர்கள் புதுப்பிக்கப்பட்ட பேக்கேஜை வெளியிடுவதைப் பொறுத்தது; அதுவரை, பயனர்கள் preview build-ஐயே நம்பியிருக்க வேண்டும்.

அடுத்து என்ன கவனிக்க வேண்டும்

  • npm வெளியீட்டு நேரம். Rolldown changelog-ஐக் கவனித்துக் கொண்டே இருங்கள்; புதிய பதிப்பு பதிவேட்டில் (registry) பதிவேற்றப்பட்டவுடன், ஒரு எளிய npm install rolldown மூலம் இந்தத் தீர்வை உங்கள் பயன்பாட்டிற்கு (production) கொண்டு வரலாம்.

இந்த இணைக்கப்பட்ட பேட்ச், பல மாதங்களாக இருந்த முட்டுச்சந்தையை ஒரு சாதாரணப் புதுப்பிப்பாக மாற்றுகிறது; இது நிஜ உலகப் பயன்பாட்டுத் தரவுகளும் (real-world usage data) தொடர்ச்சியான சமூக அறிக்கைகளும் எவ்வாறு “திட்டமிடப்படாத” ஒரு பிழையைத் தீர்க்கப்பட்டப் பிரச்சனையாக மாற்ற முடியும் என்பதைக் காட்டுகிறது. தொலைபேசியில் இணையப் பயன்பாடுகளை உருவாக்கும் எவருக்கும், அடுத்த Rolldown வெளியீடு இறுதியாக பிராசஸரைச் செயலிழக்கச் செய்யாமல் Vite-ஐத் தொடங்க அனுமதிக்கும்.