Бугаенко в интервью В офисе высказал одну очень важную мысль, которую я уже давно замечаю вообще во всех сферах жизни. И в программировании большинство холиваров именно от этого:
Люди хотят видеть только чёрное и белое, только две противоположных стороны вопроса. Думать о большем сил не хватает.
Люди хотят видеть только чёрное и белое, только две противоположных стороны вопроса. Думать о большем сил не хватает.
👍16💩5👎2🤔2
#why_ff_is_bad
Для
Для
FieldProps.type=“checkbox”`в `fieldState.input появляется отдельное поле checkbox, но поле value остается не тронутым и это ваще не удобно при парсинге.esbuild is faster but the built programs on average are slower
(оригинал отдает 404 потому что сайт сейчас переезжает на другой движок)
Давно хотел написать про то что привычные нам минификаторы часто выполняют роль оптимизирующего компилятора, но не могу найти подтверждения своим словам в виде каких-то годных статей.
Помню что когда-то что-то читал в ишьесах core-js, но из свежего есть только статья из топика, информация в которой тоже уже могла устареть.
Часто, оптимизации касаются каких-тобагов проблем и недоделок со стороны движков, например как деоптимизация let и const в сафари.
Но есть и классические оптимизации. Вы можете прямо сейчас зайти на try.terser.org и вставить туда такой код:
Внимательно посмотрев на выхлоп можно увидеть две оптимизации: инлайнинг функции loop и трансформация while в for, который в движках (был?) лучше оптимизирован.
UPD: хммм, а инлайнинг там не правильный какой-то, вместо тела функции вставляется сама функция, видимо, для вырезания объявления переменной. Не круто.
(оригинал отдает 404 потому что сайт сейчас переезжает на другой движок)
Давно хотел написать про то что привычные нам минификаторы часто выполняют роль оптимизирующего компилятора, но не могу найти подтверждения своим словам в виде каких-то годных статей.
Помню что когда-то что-то читал в ишьесах core-js, но из свежего есть только статья из топика, информация в которой тоже уже могла устареть.
Часто, оптимизации касаются каких-то
Но есть и классические оптимизации. Вы можете прямо сейчас зайти на try.terser.org и вставить туда такой код:
const loop = (n, cb) => { while(n--) cb() }
export const fn = n => loop(n, () => {})
Внимательно посмотрев на выхлоп можно увидеть две оптимизации: инлайнинг функции loop и трансформация while в for, который в движках (был?) лучше оптимизирован.
UPD: хммм, а инлайнинг там не правильный какой-то, вместо тела функции вставляется сама функция, видимо, для вырезания объявления переменной. Не круто.
Codsen
esbuild is faster but the built programs on average are slower
Programs built by esbuild v0.11.5 appear to perform on average 27% slower than the same code built by Rollup. Some packages perform more than 90% slower though! In this context, I can't use it in production.
Here are the details of the benchmarks. I hope…
Here are the details of the benchmarks. I hope…
👍4👎2
artalog
esbuild is faster but the built programs on average are slower (оригинал отдает 404 потому что сайт сейчас переезжает на другой движок) Давно хотел написать про то что привычные нам минификаторы часто выполняют роль оптимизирующего компилятора, но не могу…
GitHub
terser/terser
🗜 JavaScript parser, mangler and compressor toolkit for ES6+ - terser/terser
🤔2
Temporal
В конце 2020 года я попробовал полифил для темпорал и уже тогда мне очень понравилось. Ужвал (сотрудник Игалии, активно учавствует в разработке стандартов и разных браузеров) еще тогда говорил что полифил стабилен и безбажен (в той переписке пропосал был еще на втором стейдже, но он уже год как он взял третий).
Стоит понимать что это стандарт и мы все будем работать с датами именно так.
Хотя, я делал небольшой ПР по исправлению типов, проблем в использовании практически не возникало. Первые пару дней я втыкал в доки что бы понять общую концепцию: точное время, таймзоны, календари, продолжительности (duration) и как они между собой связаны. Сейчас же есть диаграмка в помощь для этого.
Я не могу назвать всю эту систему простой, но она очень хорошо продумана, позволяет описывать действительно сложные трансформации достаточно просто / декларативно / есть много встроенных свойств, методов и опций к ним.
Стоит понимать что это стандарт и мы все будем работать с датами именно так.
Да, формально использовать полифил не рекомендуется, но я все равно считаю его реализацию и документацию лучшим вариантом, тк альтернативой выступают библиотеки с намного меньшими гарантиями стабильности и безбажности. В любом случае, мигрировать с полифила на будущую браузерную реализацию будет точно проще, чем с какой-то другой библиотеки.
Текущая незавершенность связана с тем что сам стандарт описания времени имеет проблемы и сейчас пишется новый. Например, @Akiyamka столкнулся с тем что темпорал и момент по разному отдают время для Гаваи, что связано с разницей того как это принято у них на заканадательном уровне и какое время использует местный народ в быту (уже *цать лет).
Кмк это редкие пограничные проблемы. Лично меня больше всего смущает и расстраивает вес полифила: 178.67KB -> 44.59KB (gzip)
Стоит понимать что это стандарт и мы… Ну вы поняли 🙂
Если же вы не понимаете откуда вообще берется вся это сложность с датами крайне рекомендую к просмотру доклад Пару календарей назад я был совсем другим, Алексей Охрименко.
В конце 2020 года я попробовал полифил для темпорал и уже тогда мне очень понравилось. Ужвал (сотрудник Игалии, активно учавствует в разработке стандартов и разных браузеров) еще тогда говорил что полифил стабилен и безбажен (в той переписке пропосал был еще на втором стейдже, но он уже год как он взял третий).
Стоит понимать что это стандарт и мы все будем работать с датами именно так.
Хотя, я делал небольшой ПР по исправлению типов, проблем в использовании практически не возникало. Первые пару дней я втыкал в доки что бы понять общую концепцию: точное время, таймзоны, календари, продолжительности (duration) и как они между собой связаны. Сейчас же есть диаграмка в помощь для этого.
Я не могу назвать всю эту систему простой, но она очень хорошо продумана, позволяет описывать действительно сложные трансформации достаточно просто / декларативно / есть много встроенных свойств, методов и опций к ним.
Стоит понимать что это стандарт и мы все будем работать с датами именно так.
Да, формально использовать полифил не рекомендуется, но я все равно считаю его реализацию и документацию лучшим вариантом, тк альтернативой выступают библиотеки с намного меньшими гарантиями стабильности и безбажности. В любом случае, мигрировать с полифила на будущую браузерную реализацию будет точно проще, чем с какой-то другой библиотеки.
Текущая незавершенность связана с тем что сам стандарт описания времени имеет проблемы и сейчас пишется новый. Например, @Akiyamka столкнулся с тем что темпорал и момент по разному отдают время для Гаваи, что связано с разницей того как это принято у них на заканадательном уровне и какое время использует местный народ в быту (уже *цать лет).
Кмк это редкие пограничные проблемы. Лично меня больше всего смущает и расстраивает вес полифила: 178.67KB -> 44.59KB (gzip)
Стоит понимать что это стандарт и мы… Ну вы поняли 🙂
Если же вы не понимаете откуда вообще берется вся это сложность с датами крайне рекомендую к просмотру доклад Пару календарей назад я был совсем другим, Алексей Охрименко.
👍10
C flatMap так удобно иммутабельно массивы изменять, довольно кратко можно описать удаление / добавление элементов в любом месте.
Сейчас разрабатывается примитивный атом для работы с массивом и я не могу решить какие методы туда включить. С одной стороны, с
Если есть мысли - поделитесь в комментариях в issue.
Сейчас разрабатывается примитивный атом для работы с массивом и я не могу решить какие методы туда включить. С одной стороны, с
flatMap и [added, …state] / […state, added] можно просто решить любую задачу. С другой стороны это все равно код который нужно писать и биндить, и может для частых кейсов нужно иметь готовые методы? Но что есть частые кейсы, как их выделить?Если есть мысли - поделитесь в комментариях в issue.
👍5🔥2🤔2
bun.sh
А вы уже слышали про новый рантайм для джаваскрипта? Что бы просто распарсить и выполнить валидный EcmaScript код нужен движек, вроде V8, который в хроме используется. Но для повседневной работы этого совершенно не достаточно: мы используем таймауты, живущие в параллельных потоках, ходим в сеть, работаем с файлами или отправляем что-то на отрисовку. Вся это огромная и наисложнейшая экосистема апишек обслуживается платформами вроде браузеров или node / deno / GraalVM.
Но уже больше года разрабатывается новый рантайм для серверных JavaScript / TypeScript приложений - bun. Его ключевая особенность - параноидальный фокус на перфе. И интересный стек: JavaScriptCore как движек и ZIG для собственной реализации всего остального.
В общем, загляните на главную и почитайте что автор сам о нем пишет. А вот, для интереса, скрины результатов запуска перф тестов нового реатома на node@16 и bun
А вы уже слышали про новый рантайм для джаваскрипта? Что бы просто распарсить и выполнить валидный EcmaScript код нужен движек, вроде V8, который в хроме используется. Но для повседневной работы этого совершенно не достаточно: мы используем таймауты, живущие в параллельных потоках, ходим в сеть, работаем с файлами или отправляем что-то на отрисовку. Вся это огромная и наисложнейшая экосистема апишек обслуживается платформами вроде браузеров или node / deno / GraalVM.
Но уже больше года разрабатывается новый рантайм для серверных JavaScript / TypeScript приложений - bun. Его ключевая особенность - параноидальный фокус на перфе. И интересный стек: JavaScriptCore как движек и ZIG для собственной реализации всего остального.
В общем, загляните на главную и почитайте что автор сам о нем пишет. А вот, для интереса, скрины результатов запуска перф тестов нового реатома на node@16 и bun
🤔12🔥4👍3👎3💩1
artalog
bun.sh А вы уже слышали про новый рантайм для джаваскрипта? Что бы просто распарсить и выполнить валидный EcmaScript код нужен движек, вроде V8, который в хроме используется. Но для повседневной работы этого совершенно не достаточно: мы используем таймауты…
Циферки у bun на скриншоте верные, просто порядок не тот, патити 🙃 Отрабатывает он быстрее ноды.
Но главное это не рантайм перформанс, а то как IO работает - и тут уже тесты посложнее нужны. У меня как раз есть задачка файлы потрансформировать, попробую на bun и ноде сделать и расскажу потом какая разница.
Важный и актуальный вопрос для вновь появившегося тула это роадмап и поддержка. Не помню и не нашел какие планы на будущее, я так понимаю make things right, но вот энтузиазм и темп разработки действительно впечатляет.
Но главное это не рантайм перформанс, а то как IO работает - и тут уже тесты посложнее нужны. У меня как раз есть задачка файлы потрансформировать, попробую на bun и ноде сделать и расскажу потом какая разница.
Важный и актуальный вопрос для вновь появившегося тула это роадмап и поддержка. Не помню и не нашел какие планы на будущее, я так понимаю make things right, но вот энтузиазм и темп разработки действительно впечатляет.
X (formerly Twitter)
Jarred Sumner on X
@adrianmg For bun, I’ve been doing 90 hr weeks for over a year. I hold much of the context in my head and have 0 meetings, which makes it really fast to do large changes
It’s hard to be motivated like that at a big company
It’s hard to be motivated like that at a big company
👍5