Дима
По нему прямо можно следить, до какого конкретно уровня дошли разработчики — по коду прямо видно оптимизированные ветки
Aleksand
ну в доках вот трогает
Vladimir
Он их исполняет, если они вызываются - это да
Vladimir
А теперь тоже самое, но без IIFE
Aleksand
Он их исполняет, если они вызываются - это да
а какой ожидаемый результат оптимизированный в вашем примере?
Vladimir
Ну это зависит от примера
Vladimir
В моем примере я бы ожидал увидеть return 3
Vladimir
С фиббоначи пожалуй вряд ли можно ожидать чего то
Aleksand
В моем примере я бы ожидал увидеть return 3
а если функция не вызвана то логичнее ее не увидеть вообще чем увидеть заоптимизированный мертвый код. нет?
Vladimir
Зависит от контекста
Vladimir
Если она в глобальном коде, то ее нельзя удалять
Aleksand
Если она в глобальном коде, то ее нельзя удалять
но если она никем не вызывается почему нельзя?
Vladimir
Ее может вызывать кто то снаружи
Vladimir
Ну или так
Vladimir
Дима
Дима
Сорян, 600 строк в чат я постить не буду
Дима
Это полноценный парсер математической грамматики
Aleksand
Ее может вызывать кто то снаружи
так в примере контекст пустой, только одна глобальная функция которая никем не вызывается. уж точно в том примере ее логичнее удалить чем оптимизировать и оставлять
Sergey
ух ты PEG.js Я думал кроме меня никто его не юзает
Vladimir
Сорян, 600 строк в чат я постить не буду
Абсолютно нерелевантный пример, так как функция исключительно локальная
Sergey
он в приоритеты операторов умеет?
Дима
он в приоритеты операторов умеет?
Зависит от того как ты напишешь грамматику
Aleksand
Ее может вызвать окружение, как в примере с onload
так вы расскажите про это препаку чтобы он тоже знал когда оптимизирует. он же не может гадать что там может быть. явно ему передан пустой контекст он на него и опирается
Дима
Она сохраняется в объект
Дима
Дима
Что там про пиздеть попусту было?
Vladimir
а теперь PEG с const на var замени
Sergey
Зависит от того как ты напишешь грамматику
ну у тебя же написана какая-то
Дима
Что то у тебя много условий посыпалось, а try catch туда не вставить, с утечкой arguments, чтобы наверняка?
Дима
ну у тебя же написана какая-то
Это дефолтный пример с репла peg
Дима
https://pegjs.org/online
Vladimir
Я говорю что он не оптимизрует функции. Ты приводишь пример, в котором функций не остается в конце
vitshev
Что за prepack? Он вместо вызова функции подставляет сразу результат?)
Sergey
Это дефолтный пример с репла peg
а я думал что-то своё сложное интересное
Дима
Своё он не оптимизирует, потмоу что синтаксис не поддерживается
Дима
В отличии от суммирующих слагаемых выше, я разбирался с тем, где его границы возможностей) rest, spread и прочие операции с массивами объектов — не умеет
Vladimir
Не это его фундаментальная проблема сейчас
Vladimir
Все равно предполагается что код можно скомпилировать бабелем
Vladimir
Перед препаком
Дима
Там принципиально, говорю же
Дима
Это инвариант, он ну прям вообще вообще ничего с этим не сделает
Дима
В какой синтаксис не компилируй
Vladimir
С чем именно?
Дима
У тебя в роду были золотые рыбки?
Vladimir
С dead code elimination так же слабовато
Vladimir
Vladimir
Абстрактная интепретация отсутствует практически полностью
Дима
Код который прошёл через бабель и кложур компилятор лучше абстрактно не интерпретировать, а то так и поехать можно
Ilia
Ребят. Есть перспектива того что нода станет многопоточной?
Дима
Я же говорю, он работает с кодом как с чёрным ящиком. Он не может влезить внутрь функции и узнать, что у неё там числа, по этой же причине он не может взять сущность "массив" и превратить её в ряд сущностей
Дима
Он может только брать самый пессимистичный вариант
Дима
И хорошо
Vladimir
Да не очень
Vladimir
Весь основной код в функциях
Aleksand
Ребят. Есть перспектива того что нода станет многопоточной?
делай кластер сам, для этого есть апи. зачем нужна многопоточность в ноде?
Дима
Весь основной код в функциях
Если брать не абстрактные функции которые хоппа изниоткуда взяли два каких-то числа и просят тебя угадать ответ, а реальный код, который работает с данными на входе, выдавая данные и сайдэффекты на выходе — то его пессимистичность имеет смысл
Aleksand
чтобы упарвываться по синхронизации
и это главный профит будет! в итоге будет медленее
Ilia
делай кластер сам, для этого есть апи. зачем нужна многопоточность в ноде?
Про эти костыли я знаю. Я просто на Go пишу, но некторые штуки на ноде удобней. Я чисто из спортивного интереса - может чего изменилось.
Aleksand
Дима
И тем что он не выдуманный из головы
Дима
Чтобы оптимизировать код под данные, нужно их хотя бы получить, а ты числа вообще из замыкания не выпускаешь. Это резонный, но далеко не единственный кейс
Sergey
интересный у вас тред
Sergey
не понятно о чем общаетесь, но разговор интересный
Vladimir
Да хватит про мой пример уже. Препак не оптимизирует никакой код в функциях вообще
Vladimir
Как только он начнет - мой нежизненных пример будет оптимизрован гораздо раньше чем любой жизненный
Дима
ну этот бык будет долго запрягать
Sergey
кстати, а есть что-нибудь умеющее мержить статические объекты при билде?
Дима
Просто ничего не стоит врубить mangle: true как обычо и порезать нафиг всё что плохо лежит)
Дима
А они хотят сделать подход, который принципиально не будет делать опасные оптимизации, поэтому будут развивать это ещё долго
Дима
mangle: true — это все оптимизаторы до этого, во всех есть такая опция, которая урезает имена переменных и творит прочие непотребства
Vladimir
Ну что считать опасными