
Nikita
12.09.2016
11:33:25
рантайм ноды и браузера прям сильно отличается

Ҫѐҏӗѫӑ
12.09.2016
11:33:32
да
правда смотря что ты имеешь ввиду под рантаймом

Nikita
12.09.2016
11:34:15
ну, браузеру надо будет свою реализацию import, ноде свою

Google

Ҫѐҏӗѫӑ
12.09.2016
11:34:33
реализацию загрузчика
реализация импорта придет к ним с в8 в случае import()
более того с import можно программисту эксепшн кинуть нормальный
SyntaxError

Nikita
12.09.2016
11:36:59
я прям уверен, что все будет не так радужно)
это просто будет обычная функция с определенным названием
и из window скорее всего будет доступна))

Andrey
12.09.2016
11:37:30

Ҫѐҏӗѫӑ
12.09.2016
11:38:05
а синхронные импорты — это фича языка

Nikita
12.09.2016
11:38:23
ок, а промисы - фича языка, или энва?

Ҫѐҏӗѫӑ
12.09.2016
11:38:25
УЖЕ
промисы в спеке

Google

Nikita
12.09.2016
11:38:40
ага)) где реализована фича?)

Andrey
12.09.2016
11:39:13

Ҫѐҏӗѫӑ
12.09.2016
11:39:27
это фича языка, но по спеке любой глобал должен их экспозить

Nikita
12.09.2016
11:39:41

Andrey
12.09.2016
11:39:42
Но я думаю, это просто такая реализация в браузере

Nikita
12.09.2016
11:40:08
вот также можно сделать в спеке System и функцию import

Ҫѐҏӗѫӑ
12.09.2016
11:40:21
вроде в чакре тоже

Nikita
12.09.2016
11:40:28
и это отнюдь к энву не относится

Ҫѐҏӗѫӑ
12.09.2016
11:40:38
и там вроде как вообще не только в парсере

Nikita
12.09.2016
11:41:02
ну естественно) также как с хвостовой рекурсией. В парсере вообще делать ничего не надо, а вот в движке дофига додумывать

Ҫѐҏӗѫӑ
12.09.2016
11:41:10
кто будет описывать System.import?

Nikita
12.09.2016
11:41:24
тот же чувак, что import описал

Ҫѐҏӗѫӑ
12.09.2016
11:41:33
импорт описан в спеке es

Nikita
12.09.2016
11:41:33
то есть от того что это метод - вот ваще ничего не меняется

Ҫѐҏӗѫӑ
12.09.2016
11:41:38
промисы тоже

Nikita
12.09.2016
11:41:41
там был промис, тут есть промис

Google

Ҫѐҏӗѫӑ
12.09.2016
11:41:49
System.import где будет описан?

Nikita
12.09.2016
11:42:04
в спеке

Ҫѐҏӗѫӑ
12.09.2016
11:42:14
в какой?

Nikita
12.09.2016
11:42:18
es

Ҫѐҏӗѫӑ
12.09.2016
11:42:25
))
каким образом это будет описано чтобы работало в браузерах, ноде, любом эмбеддеде?

Nikita
12.09.2016
11:43:07
ну модули же описали?
это те же модули, только рантайм

Ҫѐҏӗѫӑ
12.09.2016
11:43:23
нет, это не те же модули
это везде свои модули
в случае асинхронного импорта
и опять же, как реюзать описание синхронного импорта в глобальной функции

Nikita
12.09.2016
11:44:38
не, у нас спека. программист рантайм вызывает System.import, тот идет к загрузчику, отдает аргумент, загрузчик делает свои грязные делишки, возвращает результат, или ошибку. System.import возвращает промис, из которого можно взять результат загрузчика

Ҫѐҏӗѫӑ
12.09.2016
11:44:40
когда реализация полностью на энве

Nikita
12.09.2016
11:44:47
ты сам сказал что загрузчик - это к энву уже
и так будет в любом случае

Ҫѐҏӗѫӑ
12.09.2016
11:44:54
куда идти к загрузчику?
вот я в8
вижу System.import
куда мне идти?

Google

Nikita
12.09.2016
11:45:30
в душе не знаю) но также как eval)

Ҫѐҏӗѫӑ
12.09.2016
11:45:51
по твоей логике сне смотреть в глобал

Nikita
12.09.2016
11:45:55
для меня это выглядит как немного замороченный fetch + eval

Ҫѐҏӗѫӑ
12.09.2016
11:46:01
но в спеке нет ничего про то, что там лежит
в es

Nikita
12.09.2016
11:46:17
где лежит?

Ҫѐҏӗѫӑ
12.09.2016
11:46:29
а значит я как в8 не могу предоставить гарантию реализации асинхронных модулей, которые требуются по спеке
в System.import

Nikita
12.09.2016
11:46:44
да ты и так и так не можешь ее предоставить

Admin
ERROR: S client not available

Nikita
12.09.2016
11:46:45
окай
это синтакс-конструкция

Ҫѐҏӗѫӑ
12.09.2016
11:47:01
это не синтаксис конструкция

Nikita
12.09.2016
11:47:02
вот получил v8 рантайм import, что он делает?

Ҫѐҏӗѫӑ
12.09.2016
11:47:22
это обычный метод от некоего глоабального System, который может быть есть, а может его нет

Nikita
12.09.2016
11:48:36
мой поинт пиздец как прост - import и system.import вообще ничем не отличается, кроме того, что import - это будет особая конструкция, которая вроде функция и выглядит как глобальная, но на самом деле ее из глобального объекта не достать и не переопределить. Что смысл того, что происходит под ее копотом не меняет вообще

Ҫѐҏӗѫӑ
12.09.2016
11:49:26
https://github.com/domenic/proposal-import-function#proposed-solution
предпоследний абзац
и последний
> This is done by introducing a new host-environment-implemented abstract operation, HostFetchImportedModule, in addition to reusing and slightly tweaking the existing HostResolveImportedModule.
которые описываются в спеке ES

Google

Ҫѐҏӗѫӑ
12.09.2016
11:50:45
System.import не может этого описать
потому что он весь на стороне энва
и нет связи между хостом и движком
и гарантий нет
но язык должен гарантировать модули

Nikita
12.09.2016
11:53:07
оок, я сдаюсь)

Ҫѐҏӗѫӑ
12.09.2016
11:53:27
в случае промисов все описано не в энве, а в спеке там же, поэтому это разное

Nikita
12.09.2016
11:53:41
то есть по сути у функции нельзя жестко это описать, в отличии от синтаксической конструкции?

Ҫѐҏӗѫӑ
12.09.2016
11:53:52
и то, что промисы лежат в глобале — это лексическое соглашение, а не предоставляется энвом
да
именно

Nikita
12.09.2016
11:54:46
ок, ясно-понятно)
но я прям уверен, что это будет по разному работать в разных энвах

Ҫѐҏӗѫӑ
12.09.2016
11:55:22
оно и должно по-разному

Nikita
12.09.2016
11:56:18
а смысл тогда стандартизировать?

Ҫѐҏӗѫӑ
12.09.2016
11:56:19
главное чтобы движок знал, что он у энва просит нужные биндинги и он гарантирует девелоперу со своей стороны, что свою работу он сделал
а там уже можно и RuntimeError какой-нить пуцльнуть
это ж про язык все
по пропозалу предлагается это обрабатывать так (уже в спеке):
https://tc39.github.io/ecma262/#sec-completion-record-specification-type
(abrupt completion)