Go Power: смелая ставка Microsoft на более быстрые инструменты для типа

Microsoft выпустила инициативу для порта компилятора Typescript и инструментов для собственной реализации Golang, кодовой названной «Corsa».

Благодаря нативной реализации Microsoft обещает значительное улучшение производительности до 10 раз, что улучшит опыт разработчиков и обеспечит новые возможности для AI.

В этом усилия также решают проблемы масштабирования в крупных кодовых базах, где пользователи TypeScript в настоящее время испытывают длительное время загрузки, проверку медленных типов и ограничения памяти, читает сообщение в блоге от Anders Hejlsberg, технического научного сотрудника Microsoft и со-создателя TypeScript.

Microsoft смогла достичь производительности и встретиться с проблемами масштабирования, переносив компилятор TypeScript на язык GO.

Производительность

Ключевые улучшения производительности включают в себя сокращение времени сборки примерно на 10 раз, 8 -кратное улучшение времени нагрузки проекта, примерно половину использования памяти текущей реализации (с ожидаемыми оптимизациями) и улучшения языковых услуг, включая значительное ускорение для завершений, быструю информацию, перейти к определению и найти все ссылки.

«Нативная реализация значительно улучшит стартап редактора, сократит большую часть времени сборки на 10 раз и существенно уменьшит использование памяти», — написал Хейлсберг.

Новая нативная версия показала впечатляющие показатели производительности в различных популярных кодовых базах:

  • VS код (1,505 000 LOC): 77,8S → 7,5 с (10,4 раза быстрее)
  • Драматург (356 000 LOC): 11,1S → 1,1S (10,1x быстрее)
  • Typeorm (270 000 loc): 17,5 с → 1,3 с (13,5 раза быстрее)
  • Date-FNS (104 000 LOC): 6,5S → 0,7S (в 9,5 раза быстрее)
  • TRPC (18 000 loc): 5,5 с → 0,6 с (в 9,1 раза быстрее)
  • RXJS (2100 LOC): 1,1S → 0,1S (в 11,0x быстрее)

Действительно, «10 -кратное улучшение производительности представляет собой огромный скачок в опыте разработки TypeScript и JavaScript…», — написал Хейлсберг.

В видео Хейлсберг отметил, что JavaScript (который основан на TypeScript) в основном используется «для использования пользовательского интерфейса и браузера и не так много для рабочих нагрузок, таких как компиляторы и инструменты на уровне системы». Он добавил, что Microsoft, вероятно, достигла предела «того, что мы можем выжать из JavaScript».

Порт или переписать

Хейлсберг сказал, что его команда знала, что они хотят сделать порт, а не переписать компилятор TypeScript.

В задача FAQ по TypeScript, Райан Кавано, лидерство в разработке для команды TypeScript, написал:

«Вообще говоря, есть две возможные стратегии, которые вы можете взять при изменении языков:

  • В «переписывании» вы начинаете с ничего, и реализуете новую систему, которая пытается решить ту же проблему, что и исходная, игнорируя стратегии реализации исходной кодовой базы
  • В «порте» вы принимаете существующую кодовую базу и конвертируете ее в новый язык, пытаясь сохранить как можно больше, чем можно

Портирование быстрее выполнить, но требует, чтобы новый язык был, по крайней мере, несколько архитектурно совместимы с оригинальным языком… »

Зачем идти?

Хейлсберг сказал, что Microsoft пробовала прототипирование во всех обычных целевых языках подозреваемых (C#, C ++, Rust и т. Д.), Но обнаружила, что GO был наиболее подходящим языком для конкретной рабочей нагрузки, которую они пытались сделать.

«Очень интересно! К сожалению, разработчики JS используются для замедления инструментов, поэтому более быстрый компилятор, который допускает улучшенное время запуска редактора, очень приветствуется », — сказал Дэвид Миттон, генеральный директор Arcjet, New Stack. «Переход к местному компилятору имеет большой смысл, хотя GO — необычный выбор для этого типа проекта. Когда я увидел объявление, я предположил, что это будет в ржавчине, как и большинство других переписываний инструмента JS: Rolldown, Turbo (который перешел от Go в Rust), Deno… Интересно, что стоит за этим решением ».

Отвечая на этот вопрос, Кавано в FAQ писал, что Go сделал лучшее, рассматривая несколько критериев, которые являются особенными для этой ситуации.

«Безусловно, наиболее важным аспектом является то, что мы должны сохранить новую кодовую базу как можно более совместимой, как с точки зрения семантики, так и с точки зрения структуры кода», — написал он. «Мы рассчитываем поддерживать обе кодовые базы в течение довольно долгого времени в будущем. Языки, которые позволяют структурно сходной кодовой базе, предлагают значительную благо для всех, кто вносит изменения кода, потому что мы можем легко переносить изменения между двумя кодовыми базами… »

Реализация на основе GO доступна на GitHub (TypeScript-GO-репозиторий) и в настоящее время способна загружать многие популярные проекты TypeScript, включая сам компилятор TypeScript.

Версии

Microsoft ожидает предварительного просмотра нативного TSC, способного к командной строке Typechecking к середине 2025 года. TSC является компилятором TypeScript. К концу 2025 года ожидается реализация функций для сборки проектов и языкового обслуживания.

Самым последним выпуском TypeScript был TypeScript 5.8, с TypeScript 5.9 в ближайшее время. По словам Хейлсберга, кодовая база на основе JS продолжит разработку в серию 6.x, а TypeScript 6.0 представит некоторые деформации и нарушающие изменения в соответствии с предстоящей нативной кодовой базой.

«Когда нативная кодовая база достигла достаточного паритета с текущей типовой, мы выпустим его в виде типовой 4.0», — сказал он.

И «ради ясности, мы будем ссылаемся на них просто как TypeScript 6 (JS) и TypeScript 7 (Tain), поскольку это будет номенклатура на обозримом будущем», — написал Хейлсберг. «Вы также можете увидеть нас, ссылаясь на« Strada »(исходное кодовое имя TypeScript) и« Corsa »(кодовое имя для этих усилий) во внутренних дискуссиях или комментариях кода».

Между тем, преимущества, превышающие скорость, включают поддержку мгновенных, комплексных списков ошибок во всех проектах и ​​более продвинутые возможности рефакторирования. Это также позволяет более глубокому кодовому пониманию ранее слишком дорогим, чтобы вычислить и устанавливает основу для инструментов ИИ следующего поколения, которые улучшают разработку. Microsoft также перемещается в протокол языкового сервера (LSP) для лучшего согласования с другими языками.

«Основное ценностное предложение TypeScript — отличный опыт разработчика», — написал Хейлсберг. «По мере того, как ваша кодовая база растет, то же самое происходит, но во многих случаях TypeScript не смог масштабировать до самых больших кодовых баз».

Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Дэррил К. Тафт охватывает DevOps, инструменты разработки программного обеспечения и проблемы, связанные с разработчиком из своего офиса в районе Балтимора. Он имеет более чем 25 -летний опыт работы в бизнесе и всегда ищет следующий совок. Он работал … Подробнее от Даррила К. Тафта Лорейн Лоусон — ветеран -репортер, который в течение 25 лет освещал технологические проблемы от интеграции данных до безопасности. Прежде чем присоединиться к новому стеку, она работала редактором Banking Technology Site Bank Automation News. Она … читайте больше от Лорейн Лоусон

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *