TypeScript 7, “isolated declarations” அம்சத்துடன் வெளியாகியுள்ளது. இது ஒரு கம்பைலர் பயன்முறை (compiler mode) ஆகும், இது பெரிய monorepos கோப்புகளை இணையாக (parallel) கம்பைல் செய்ய அனுமதிக்கிறது மற்றும் டெவலப்பர்களுக்கான பின்னூட்ட சுழற்சிகளை (feedback loops) வேகப்படுத்துகிறது.

ஏன் இப்போது isolated declarations முக்கியம்

இந்த வெளியீடு வரை, TypeScript கம்பைலர் declaration கோப்புகளை (.d.ts) ஒரு ஒற்றை திரையில் (single thread) மட்டுமே செயலாக்கியது. நூற்றுக்கணக்கான தொகுப்புகளைக் (packages) கொண்ட codebase-களில், அந்தப் படிநிலை பெரும்பாலும் முழு build pipeline-ஐயும் தாமதப்படுத்தியது. type-checking வேலையை பல்வேறு cores-களுக்குப் பிரித்து வழங்குவதன் மூலம், தங்கள் அனைத்து நூலகங்களையும் (libraries) ஒரே களஞ்சியத்தில் (repository) வைத்திருக்கும் குழுக்களுக்கு, isolated declarations build நேரத்தை வெகுவாகக் குறைக்கிறது.

CI வேலைகளை (jobs) இயக்கும் அல்லது விரைவான local rebuilds தேவைப்படும் எந்தவொரு நிறுவனத்திற்கும் இதன் தாக்கம் உடனடியாகத் தெரியும்.

இணையாக (parallel) type checking செய்வதற்கான வழிமுறை

Microsoft பல ஆண்டுகளுக்கு முன்பே incremental compilation வசதியைச் சேர்த்தது, ஆனால் கோப்புகள் ஒன்றையொன்று சார்ந்திருப்பதால் declaration கட்டம் தொடர்ச்சியாகவே (sequential) இருந்தது. Monorepos வளர வளர, அந்த ஒற்றை-திரை (single-threaded) முறை ஒரு பெரும் தடையாக மாறியது. Isolated declarations அந்தச் சார்புச் சங்கிலியை (dependency chain) உடைத்து, ஒவ்வொரு கோப்பின் பொதுவான பகுதியையும் (public surface) ஒரு தனி அலகாகக் கருதி, அவற்றை ஒரே நேரத்தில் சரிபார்க்கிறது.

யாருக்குப் பயன், யாருக்குக் கிடைக்காது

  • பெரிய monorepos கொண்ட டெவலப்மென்ட் குழுக்கள் – குறிப்பாகப் பல CPU cores கொண்ட CI agents-களில், build நேரத்தின் மிகப்பெரிய குறைவைக் காண்பார்கள்.
  • சிறிய திட்டங்கள் அல்லது ஒற்றை-தொகுப்பு (single-package) செயலிகள் – declaration படிநிலை ஏற்கனவே மொத்த கம்பைல் நேரத்தின் மிகச்சிறிய பகுதியை மட்டுமே பயன்படுத்துவதால், இவர்களுக்குச் சிறிய முன்னேற்றம் மட்டுமே தெரியக்கூடும்.
  • குறைந்த வசதிகள் கொண்ட வன்பொருளைப் (constrained hardware) பயன்படுத்தும் குழுக்கள் – இதே காரணத்திற்காக இவர்களுக்கும் மிகக் குறைந்த முன்னேற்றமே இருக்கும்.

விரிவான TypeScript 7 வெளியீடு

Isolated declarations பாதுகாப்பை மையமாகக் கொண்ட பல மேம்படுத்தல்களுடன் வருகிறது:

  • Strict mode மேம்பாடுகள்strictIndexSignatures போன்ற புதிய சோதனைகள், ஒரு கோட் (code) இருக்க வாய்ப்பில்லாத object key-ஐ அணுகும்போது எச்சரிக்கின்றன.
  • Named tuple elements – டெவலப்பர்கள் tuple இடங்களுக்குப் பெயரிடலாம், இது API signatures-களைத் தானாகவே ஆவணப்படுத்தும் (self-documenting) தன்மையைக் கொடுக்கிறது.
  • மேம்படுத்தப்பட்ட satisfies operator – சிக்கலான generics-களைச் சிறப்பாகக் கையாளுவதன் மூலம், வாசிப்புத் திறனை (readability) இழக்காமல் type inference-ஐ மேம்படுத்துகிறது.
  • Async context propagation – AsyncContext API-க்கான ஆதரவு, asynchronous call stacks-களைக் கண்டறிய (tracing) உதவுகிறது.
  • Decorator metadata – TC39 முன்மொழிவு (proposal), runtime code-கள் class decorations-களை ஆய்வு செய்ய அனுமதிக்கிறது.
  • Explicit variance annotations – generic parameters-களில் + அல்லது - பயன்படுத்துவது covariance அல்லது contravariance-ஐக் குறிக்கிறது, இது type checker-ன் துல்லியத்தை அதிகரிக்கிறது.

இந்தச் சேர்க்கைகள் TypeScript-ன் “type-first” மொழி என்ற புகழை உறுதிப்படுத்துகின்றன, ஆனால் codebase அளவுடன் சேர்ந்து அதிகரிக்கும் ஒரு முக்கியப் பிரச்சனையை (pain point) நேரடியாகத் தீர்க்கும் ஒரே அம்சம் isolated declarations மட்டுமே.

அடுத்து கவனிக்க வேண்டியவை

சுருக்கம்

Isolated declarations, monorepo-களை அதிகம் பயன்படுத்தும் குழுக்களுக்கு விரைவான builds-களை வழங்குகிறது. CI நிமிடங்களுக்காகப் பணம் செலுத்தும் அல்லது மெதுவான local rebuilds-களால் பாதிக்கப்படும் நிறுவனங்களுக்கு, TypeScript 7-க்கு மேம்படுத்துவது என்பது நேரத்தையும் செலவையும் அளவிடக்கூடிய வகையில் சேமிக்க உதவும் ஒரு குறைந்த ஆபத்துள்ள (low-risk) நடவடிக்கையாகும். இந்த வெளியீட்டின் மற்ற அம்சங்கள் பயனுள்ள பாதுகாப்பு வலைகளை (safety nets) வழங்கினாலும், நவீன JavaScript மேம்பாட்டின் அளவிடுதல் சவாலுக்கு (scalability challenge) நேரடியாகப் பதிலளிக்கும் முக்கிய அம்சம் இந்த இணையாகச் செயல்படும் (parallel) type-checking engine தான்.