ഈ ആഴ്ച പുറത്തിറങ്ങിയ TypeScript 7, Go ഉപയോഗിച്ച് പൂർണ്ണമായും പുനർനിർമ്മിച്ചതാണ്. ഇത് VS Code-ന്റെ കമ്പൈലേഷൻ സമയം 17.5 സെക്കൻഡിൽ നിന്ന് 1.3 സെക്കൻഡിൽ താഴെയായി കുറയ്ക്കുകയും വലിയ പ്രോജക്റ്റുകളിൽ മെമ്മറി ഉപയോഗം 26% വരെ കുറയ്ക്കുകയും ചെയ്യുന്നു. ഈ വേഗത ദൈനംദിന കോഡിംഗ് കൂടുതൽ എളുപ്പമാക്കുന്നു, കൂടാതെ ഇത് ഡെവലപ്പർമാരുടെ സമയം ലാഭിക്കാനും സഹായിക്കുന്നു.

എന്തുകൊണ്ടാണ് Go ഉപയോഗിച്ചുള്ള പുനർനിർമ്മാണം പ്രധാനമാകുന്നത്

കാലങ്ങളായി നിലനിന്നിരുന്ന JavaScript/Node ഇംപ്ലിമെന്റേഷന് പകരം Microsoft കമ്പൈലർ Go ഉപയോഗിച്ച് പുനർനിർമ്മിച്ചു. പ്രോജക്റ്റുകൾ വലുതാകുമ്പോൾ പഴയ കോഡ്ബേസ് പരിമിതികൾ നേരിട്ടിരുന്നു—പാഴ്സിംഗും (parsing) ടൈപ്പ്-ചെക്കിംഗും (type-checking) പരിമിതമായ CPU, RAM എന്നിവയുള്ള CI റണ്ണറുകളെ സാവധാനത്തിലാക്കിയിരുന്നു. ഇൻ-ബിൽറ്റ് കൺകറൻസി (concurrency) ഉള്ള ഒരു കംപൈൽഡ് ഭാഷയിലേക്ക് മാറിയതോടെ, പുതിയ എഞ്ചിൻ പാഴ്സിംഗും ടൈപ്പ്-ചെക്കിംഗും സമാന്തരമായി (parallel) പ്രവർത്തിപ്പിക്കുന്നു, ഇത് ആദ്യത്തെ എറർ കാണാനുള്ള കാത്തിരിപ്പ് സമയം ഗണ്യമായി കുറയ്ക്കുന്നു.

യഥാർത്ഥ ലോകത്തിലെ പ്രകടന നേട്ടങ്ങൾ

പ്രധാനപ്പെട്ട ചില കോഡ്ബേസുകളിൽ നിന്നുള്ള ആദ്യകാല ബെഞ്ച്മാർക്കുകൾ ഈ മാറ്റത്തിന്റെ സ്വാധീനം വ്യക്തമാക്കുന്നു:

  • VS Code: 11.9 മടങ്ങ് വേഗതയേറിയ കമ്പൈലേഷൻ, 18% കുറഞ്ഞ മെമ്മറി ഉപയോഗം.
  • Sentry, Bluesky, Playwright, Tldraw: 7.7 മുതൽ 8.9 മടങ്ങ് വരെ വേഗത വർദ്ധിച്ചു.
  • Bluesky-യിൽ മെമ്മറി ഉപയോഗം 26% കുറയുന്നതായും കാണുന്നു.

ദിവസം തന്നെ ഡസൻ കണക്കിന് തവണ “run” അല്ലെങ്കിൽ “watch” ഉപയോഗിക്കുന്ന ഡെവലപ്പർമാർക്ക് കൂടുതൽ സുഗമമായ എഡിറ്റിംഗും കുറഞ്ഞ CI ലോഡും അനുഭവപ്പെടും.

പുതിയ ഫ്ലാഗുകൾ (flags) നിങ്ങൾക്ക് നിയന്ത്രണം നൽകുന്നു

വേഗതയും മെമ്മറിയും സന്തുലിതമായി നിലനിർത്താൻ ടീമുകളെ സഹായിക്കുന്ന കമാൻഡ്-ലൈൻ ഓപ്ഷനുകളുമായാണ് ഈ പുതിയ പതിപ്പ് വരുന്നത്:

  • --checkers, --builders എന്നിവ പാഴ്സിംഗും ടൈപ്പ്-ചെക്കിംഗും സമാന്തരമായി പ്രവർത്തിപ്പിക്കുന്നു, ഇത് മൾട്ടി കോർ CPU-കളുടെ ശേഷി പരമാവധി ഉപയോഗപ്പെടുത്തുന്നു.
  • --singleThreaded എല്ലാ ജോലികളും ഒരു സ്ട്രെഡിലേക്ക് (thread) മാത്രമായി പരിമിതപ്പെടുത്തുന്നു, ഇത് റേസ് കണ്ടീഷനുകൾ (race conditions) ഉണ്ടാകുമ്പോൾ ഡീബഗ്ഗിംഗ് എളുപ്പമാക്കുന്നു.
  • ടൈപ്പ്-ചെക്കിംഗ് വർക്കർമാരെയും ബിൽഡർ വർക്കർമാരെയും പ്രത്യേകം സ്കെയിൽ ചെയ്യാൻ സാധിക്കുന്നത് വഴി, ഓരോ ഘട്ടത്തിനും ആവശ്യമായ റിസോഴ്സുകൾ മാത്രം CI പൈപ്പ്‌ലൈനുകൾക്ക് നൽകാൻ കഴിയുന്നു.
  • പുതുക്കിയ --watch മോഡ് Parcel-ന്റെ Go അടിസ്ഥാനമാക്കിയുള്ള ഒരു പതിപ്പ് ഉപയോഗിക്കുന്നു. ഇത് വലിയ node_modules ഫോൾഡറുകൾ പരിശോധിക്കുന്നതിലെ കാലതാമസം ഒഴിവാക്കുകയും ഫയൽ മാറ്റങ്ങൾ വേഗത്തിൽ കണ്ടെത്തുകയും ചെയ്യുന്നു.

ആർക്കൊക്കെ ഗുണമുണ്ടാകും, ആർക്കൊക്കെ സംശയമുണ്ടാകാം

TypeScript-നെ വളരെയധികം ആശ്രയിക്കുന്ന Next.js, Nuxt തുടങ്ങിയ ഫ്രണ്ട്-എൻഡ് ഫ്രെയിംവർക്കുകൾക്ക് വേഗത്തിലുള്ള റീബിൽഡുകളും മികച്ച ഫീഡ്‌ബാക്ക് ലൂപ്പുകളും ലഭിക്കും. VS Code, Cursor തുടങ്ങിയ IDE-കൾ കൂടുതൽ വേഗതയുള്ളതാകുന്നതോടെ, ഡെവലപ്പർമാർ ടെർമിനലിലേക്ക് മാറുന്നതിന് പകരം എഡിറ്ററിൽ തന്നെ കൂടുതൽ സമയം ചെലവഴിക്കാൻ പ്രേരിതരാകും.

ഇനി ശ്രദ്ധിക്കേണ്ട കാര്യങ്ങൾ

  • വലിയ ഓപ്പൺ സോഴ്സ് പ്രോജക്റ്റുകളിലും എന്റർപ്രൈസ് മോണോറെപ്പോകളിലും (monorepos) ഇതിന്റെ ഉപയോഗം എത്രത്തോളമുണ്ടാകുന്നു എന്നത്.
  • സ്ഥിരതയെക്കുറിച്ചും (stability) പ്രകടനത്തിൽ വരാൻ സാധ്യതയുള്ള മറ്റ് പ്രശ്നങ്ങളെക്കുറിച്ചുമുള്ള കമ്മ്യൂണിറ്റി ഫീഡ്‌ബാക്ക്.
  • കംപൈലേഷൻ സമയം കുറയ്ക്കാനോ എറർ ഡയഗ്നോസ്റ്റിക്സ് മെച്ചപ്പെടുത്താനോ Microsoft കൊണ്ടുവരുന്ന പുതിയ അപ്‌ഡേറ്റുകൾ.