The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

В язык JavaScript предложено добавить синтаксис с информацией о типах, opennews (??), 14-Мрт-22, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


78. "В язык JavaScript предложено добавить синтаксис с информацие..."  –1 +/
Сообщение от Аноним (78), 15-Мрт-22, 11:14 
>Наличие явно заданной информации о типах позволит избежать многих ошибок в процессе разработки, даст возможность задействовать дополнительные техники оптимизации

Ага, и вылезет ещё ворох уязвимостей и векторов фингерпринтинга, связанных с некоррекной обработкой "во имя производительности" умышленно неверно проспецифицированных типов.

Все современные JIT-компилирующие движки JS умеют сами определять типы в рантайме и рекомпилировать код так, чтобы он более оптимально работал при вероятных сочетаниях ипов параметров.

Дача разработчикам явной возможности указать тип без исполнения и сбора статистики как минимум даст возможность сразу фингерпринтить движки по времени (по реакции на некорректный тип), и, возможно, организовывать скрытые каналы. Также могут вылезти уязвимости type confusion, которые сейчас обходятся тем, что сначала код просто интерпретируется. Поэтому самый лучший вариант для разрабов браузеров - просто игнорить инфу о типах. То есть ничего не делать, ибо инфа о типах предлагается в виде комментов.

Адекватные разработчики браузеров просто проигнорируют эту инициативу. Заметьте, в числе авторов инициативы нет ни Google, ни Mozilla, ни Apple.

Что имело бы смысл сделать - так это добавить в браузеры поддержку TypeScript напрямую, без обратной совместимости с JS и с обязательной статической валидацией типов. Это ислючает случай, когда рельный тип не совпадает со специфицированным. Поэтому можно JIT-ить сразу, доверяя инфе о типах. При сохранении совместимости с JS такое провернуть нельзя, код должен работать идентично что при наличии комментариев, что без них.

Ответить | Правка | Наверх | Cообщить модератору

151. "В язык JavaScript предложено добавить синтаксис с информацие..."  +/
Сообщение от Аноним (170), 16-Мрт-22, 09:37 
>Что имело бы смысл сделать - так это добавить в браузеры поддержку TypeScript напрямую, без обратной совместимости с JS

"Typescript - это не "еще один язык программирования". В двух словах - это просто надмножество Javascript (ES6) с опциональной статической типизацией"
Цель разработки TypeScript обратносовместимое надмножество JavaSctipt

>и с обязательной статической валидацией типов. Это ислючает случай, когда рельный тип не совпадает со специфицированным

Типы TypeScript существуют только во время компиляции, во время выполнения их нет. Само собой проверок что реальный тип соответствует обьявленному нет (так как обьявления существуют только во время компиляции)

Статическая типизация опциональна даже в строгом режиме, всегда можно обьявить any и отключить все проверки.

Вам нужно разработать еще один язык, например SuperTypeScript с вашими хотелками и добавить его поддержку в браузеры.

Ответить | Правка | Наверх | Cообщить модератору

164. "В язык JavaScript предложено добавить синтаксис с информацие..."  +/
Сообщение от Аноним (78), 16-Мрт-22, 10:51 
>Типы TypeScript существуют только во время компиляции

Так компиляцию и предлагается переместить в браузер. Причём компиляцию не в JS, а сразу в валидированный байт-код и машинный код.

>даже в строгом режиме, всегда можно объявить any и отключить все проверки

Это означает, что в этом случае нужна рантаймовая проверка типа, которую браузер тоже заjitит. А в остальных - не нужна, браузер typescript уже провалидировал, тип отличный от специфицированного быть не может, кроме как в точках соприкосновения с обычным JS. Там браузер встроит рантаймовую проверку.


>Вам нужно разработать еще один язык, например SuperTypeScript с вашими хотелками и добавить его поддержку в браузеры.

Ну да, это не совсем typescript получается, ибо нет возможности солгать. Но существующий код тех, кто не лжёт, должен продолжить работать.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру