TypeScript 7 "isolated declarations" ನೊಂದಿಗೆ ಬಂದಿದೆ, ಇದು ದೊಡ್ಡ monorepos ಗಳು ಫೈಲ್‌ಗಳನ್ನು ಸಮಾಂತರವಾಗಿ (parallel) ಸಂಕಲನ ಮಾಡಲು (compile) ಮತ್ತು ડેವಲಪರ್‌ಗಳ ಫೀಡ್‌ಬ್ಯಾಕ್ ಲೂಪ್‌ಗಳನ್ನು ವೇಗಗೊಳಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುವ ಒಂದು ಕಾಂಪೈಲರ್ ಮೋಡ್ ಆಗಿದೆ.

ಈಗ isolated declarations ಏಕೆ ಮುಖ್ಯ

ಈ ಬಿಡುಗಡೆಯವರೆಗೆ, TypeScript ಕಾಂಪೈಲರ್ ಘೋಷಣಾ ಫೈಲ್‌ಗಳನ್ನು (.d.ts) ಏಕತಂತಿ (single thread) ಮೇಲೆ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತಿತ್ತು. ನೂರಾರು ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಹೊಂದಿರುವ ಕೋಡ್‌ಬೇಸ್‌ಗಳಲ್ಲಿ, ಆ ಹಂತವು ಹೆಚ್ಚಾಗಿ ಇಡೀ ಬಿಲ್ಡ್ ಪೈಪ್‌ಲೈನ್ ಅನ್ನು ನಿಧಾನಗೊಳಿಸುತ್ತಿತ್ತು. ಕೋರ್‌ಗಳ ನಡುವೆ type-checking ಕೆಲಸವನ್ನು ವಿಭಜಿಸುವ ಮೂಲಕ, ತಮ್ಮ ಎಲ್ಲಾ ಲೈಬ್ರರಿಗಳನ್ನು ಒಂದೇ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಇರಿಸಿಕೊಳ್ಳುವ ತಂಡಗಳಿಗೆ isolated declarations ಬಿಲ್ಡ್ ಸಮಯವನ್ನು ಗಣನೀಯವಾಗಿ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.

CI ಕೆಲಸಗಳನ್ನು ನಡೆಸುವ ಅಥವಾ ವೇಗದ ಸ್ಥಳೀಯ ರೀಬಿಲ್ಡ್‌ಗಳ ಅಗತ್ಯವಿರುವ ಯಾವುದೇ ಸಂಸ್ಥೆಗೆ ಇದರ ಪರಿಣಾಮ ತಕ್ಷಣವೇ ತಿಳಿಯುತ್ತದೆ.

ಸಮಾಂತರ type checking ಕಡೆಗಿನ ಹಾದಿ

Microsoft ವರ್ಷಗಳ ಹಿಂದೆಯೇ incremental compilation ಅನ್ನು ಸೇರಿಸಿತು, ಆದರೆ ಫೈಲ್‌ಗಳು ಒಂದಕ್ಕೊಂದು ಅವಲಂಬಿತವಾಗಿದ್ದರಿಂದ ಘೋಷಣಾ ಹಂತವು (declaration phase) ಅನುಕ್ರಮವಾಗಿ (sequential) ಇತ್ತು. Monorepos ಬೆಳೆದಂತೆ, ಈ ಏಕತಂತಿ ಪ್ರಕ್ರಿಯೆಯು ದೊಡ್ಡ ಅಡಚಣೆಯಾಗಿ (bottleneck) ಪರಿಣಮಿಸಿತು. Isolated declarations ಅವಲಂಬನೆಯ ಸರಪಳಿಯನ್ನು ಮುರಿಯುತ್ತದೆ, ಪ್ರತಿಯೊಂದು ಫೈಲ್‌ನ ಪಬ್ಲಿಕ್ ಸರ್ಫೇಸ್ ಅನ್ನು ಸ್ವತಂತ್ರ ಘಟಕವಾಗಿ ಪರಿಗಣಿಸುತ್ತದೆ ಮತ್ತು ಅವುಗಳನ್ನು ಏಕಕಾಲದಲ್ಲಿ ಪರಿಶೀಲಿಸುತ್ತದೆ.

ಯಾರು ಪ್ರಯೋಜನ ಪಡೆಯುತ್ತಾರೆ, ಯಾರು ಪಡೆಯದಿರಬಹುದು

  • ದೊಡ್ಡ monorepos ಹೊಂದಿರುವ ડેವ್ ತಂಡಗಳು – ಬಿಲ್ಡ್ ಸಮಯದಲ್ಲಿ ದೊಡ್ಡ ಮಟ್ಟದ ಕಡಿತವನ್ನು ಕಾಣಬಹುದು, ವಿಶೇಷವಾಗಿ ಬಹು CPU ಕೋರ್‌ಗಳನ್ನು ಹೊಂದಿರುವ CI ಏಜೆಂಟ್‌ಗಳಲ್ಲಿ.
  • ಸಣ್ಣ ಪ್ರಾಜೆಕ್ಟ್‌ಗಳು ಅಥವಾ ಸಿಂಗಲ್-ಪ್ಯಾಕೇಜ್ ಆಪ್‌ಗಳು – ಕೇವಲ ಸಣ್ಣ ಮಟ್ಟದ ಸುಧಾರಣೆಯನ್ನು ಗಮನಿಸಬಹುದು, ಏಕೆಂದರೆ ಘೋಷಣಾ ಹಂತವು ಈಗಾಗಲೇ ಒಟ್ಟು ಕಾಂಪೈಲ್ ಸಮಯದ ಅತ್ಯಲ್ಪ ಭಾಗವನ್ನು ಮಾತ್ರ ಬಳಸುತ್ತದೆ.
  • ಸೀಮಿತ ಹಾರ್ಡ್‌ವೇರ್ ಹೊಂದಿರುವ ತಂಡಗಳು – ಇದೇ ಕಾರಣಕ್ಕಾಗಿ ಇವರಿಗೂ ಅಲ್ಪ ಮಟ್ಟದ ಸುಧಾರಣೆ ಮಾತ್ರ ಕಂಡುಬರುತ್ತದೆ.

ವಿಸ್ತೃತ TypeScript 7 ಬಿಡುಗಡೆ

Isolated declarations ಸುರಕ್ಷತೆಗೆ ಗಮನ ಕೇಂದ್ರೀಕರಿಸುವ ಹಲವಾರು ಅಪ್‌ಗ್ರೇಡ್‌ಗಳೊಂದಿಗೆ ಬಂದಿದೆ:

  • Strict mode refinementsstrictIndexSignatures ನಂತಹ ಹೊಸ ಪರಿசோதனೆಗಳು, ಕೋಡ್ ಒಂದು ಸಂಭವನೀಯವಾಗಿ ಇಲ್ಲದಿರುವ ಆಬ್ಜೆಕ್ಟ್ ಕೀಯನ್ನು (object key) ಪ್ರವೇಶಿಸಿದಾಗ ಎಚ್ಚರಿಸುತ್ತವೆ.
  • Named tuple elements – ડેವಲಪರ್‌ಗಳು tuple ಸ್ಥಾನಗಳಿಗೆ ಲೇಬಲ್ ನೀಡಬಹುದು, ಇದು API ಸಹಿಗಳನ್ನು (signatures) ಸ್ವಯಂ-ದಾಖಲೆಗೊಳಿಸುತ್ತದೆ (self-documenting).
  • Enhanced satisfies operator – ಸಂಕೀರ್ಣವಾದ generics ಅನ್ನು ಉತ್ತಮವಾಗಿ ನಿರ್ವಹಿಸುವುದರಿಂದ, ಓದುವಿಕೆಯನ್ನು ಬಲಿ না ಕೊಟ್ಟು type inference ಅನ್ನು ಸುಧಾರಿಸುತ್ತದೆ.
  • Async context propagation – AsyncContext API ಗೆ ಬೆಂಬಲವು ಅಸಿಂಕ್ರೋನಸ್ ಕಾಲ್ ಸ್ಟ್ಯಾಕ್‌ಗಳ (asynchronous call stacks) ಟ್ರೇಸಿಂಗ್‌ಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ.
  • Decorator metadata – TC39 ಪ್ರಸ್ತಾವನೆಯು ರನ್‌ಟೈಮ್ ಕೋಡ್ ಕ್ಲಾಸ್ ಡೆಕೋರೇಶನ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಅನುಮತಿಸುತ್ತದೆ.
  • Explicit variance annotations – Generic ಪ್ಯಾರಾಮೀಟರ್‌ಗಳ ಮೇಲೆ + ಅಥವಾ - ಬಳಸುವುದು covariance ಅಥವಾ contravariance ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಇದು type checker ನ ನಿಖರತೆಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ.

ಈ ಸೇರ್ಪಡೆಗಳು TypeScript ಅನ್ನು "type-first" ಭಾಷೆಯಾಗಿ ಬಲಪಡಿಸುತ್ತವೆ, ಆದರೆ isolated declarations ಮಾತ್ರ ಕೋಡ್‌ಬೇಸ್ ಗಾತ್ರದೊಂದಿಗೆ ಹೆಚ್ಚಾಗುವ ಸಮಸ್ಯೆಯನ್ನು ನೇರವಾಗಿ ಪರಿಹರಿಸುವ ಏಕೈಕ ವೈಶಿಷ್ಟ್ಯವಾಗಿದೆ.

ಮುಂದೆ ಏನನ್ನು ಗಮನಿಸಬೇಕು

ಅಂತಿಮ ತೀರ್ಮಾನ

Isolated declarations monorepo-ಹೆವಿ ತಂಡಗಳಿಗೆ ವೇಗವಾದ ಬಿಲ್ಡ್‌ಗಳನ್ನು ನೀಡುತ್ತದೆ. CI ನಿಮಿಷಗಳಿಗಾಗಿ ಹಣ ಪಾವತಿಸುವ ಅಥವಾ ನಿಧಾನವಾದ ಸ್ಥಳೀಯ ರೀಬಿಲ್ಡ್‌ಗಳಿಂದ ಬಳಲುವ ಸಂಸ್ಥೆಗಳಿಗೆ, TypeScript 7 ಗೆ ಅಪ್‌ಗ್ರೇಡ್ ಮಾಡುವುದು ಕಡಿಮೆ ಅಪಾಯದ ಕ್ರಮವಾಗಿದ್ದು, ಇದು ಅಳೆಯಬಹುದಾದ ಸಮಯ ಮತ್ತು ವೆಚ್ಚದ ಉಳಿತಾಯಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ. ಉಳಿದ ಬಿಡುಗಡೆಯು ಉಪಯುಕ್ತ ಸುರಕ್ಷತಾ ಜಾಲಗಳನ್ನು (safety nets) ಸೇರಿಸುತ್ತದೆ, ಆದರೆ ಸಮಾಂತರ type-checking ಇಂಜಿನ್ ಆಧುನಿಕ JavaScript ಅಭಿವೃದ್ಧಿಯ ಸ್ಕೇಲೆಬಿಲಿಟಿ ಸವಾಲಿಗೆ ನೇರವಾಗಿ ಉತ್ತರಿಸುವ ಪ್ರಮುಖ ವೈಶಿಷ್ಟ್ಯವಾಗಿದೆ.