artalog
4.22K subscribers
538 photos
40 videos
40 files
905 links
Развернутые ответы на вопросы в чатах, мысли от рабочих процессов.
Вопросы - @artalar.
Download Telegram
Live stream started
Призыв к контрибьюшену в реатом сейчас обсудим)
Live stream finished (20 minutes)
esbuild is faster but the built programs on average are slower
(оригинал отдает 404 потому что сайт сейчас переезжает на другой движок)

Давно хотел написать про то что привычные нам минификаторы часто выполняют роль оптимизирующего компилятора, но не могу найти подтверждения своим словам в виде каких-то годных статей.

Помню что когда-то что-то читал в ишьесах core-js, но из свежего есть только статья из топика, информация в которой тоже уже могла устареть.

Часто, оптимизации касаются каких-то багов проблем и недоделок со стороны движков, например как деоптимизация let и const в сафари.

Но есть и классические оптимизации. Вы можете прямо сейчас зайти на try.terser.org и вставить туда такой код:


const loop = (n, cb) => { while(n--) cb() }
export const fn = n => loop(n, () => {})


Внимательно посмотрев на выхлоп можно увидеть две оптимизации: инлайнинг функции loop и трансформация while в for, который в движках (был?) лучше оптимизирован.

UPD: хммм, а инлайнинг там не правильный какой-то, вместо тела функции вставляется сама функция, видимо, для вырезания объявления переменной. Не круто.
👍4👎2
Temporal

В конце 2020 года я попробовал полифил для темпорал и уже тогда мне очень понравилось. Ужвал (сотрудник Игалии, активно учавствует в разработке стандартов и разных браузеров) еще тогда говорил что полифил стабилен и безбажен (в той переписке пропосал был еще на втором стейдже, но он уже год как он взял третий).

Стоит понимать что это стандарт и мы все будем работать с датами именно так.

Хотя, я делал небольшой ПР по исправлению типов, проблем в использовании практически не возникало. Первые пару дней я втыкал в доки что бы понять общую концепцию: точное время, таймзоны, календари, продолжительности (duration) и как они между собой связаны. Сейчас же есть диаграмка в помощь для этого.

Я не могу назвать всю эту систему простой, но она очень хорошо продумана, позволяет описывать действительно сложные трансформации достаточно просто / декларативно / есть много встроенных свойств, методов и опций к ним.

Стоит понимать что это стандарт и мы все будем работать с датами именно так.

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

Текущая незавершенность связана с тем что сам стандарт описания времени имеет проблемы и сейчас пишется новый. Например, @Akiyamka столкнулся с тем что темпорал и момент по разному отдают время для Гаваи, что связано с разницей того как это принято у них на заканадательном уровне и какое время использует местный народ в быту (уже *цать лет).

Кмк это редкие пограничные проблемы. Лично меня больше всего смущает и расстраивает вес полифила: 178.67KB -> 44.59KB (gzip)

Стоит понимать что это стандарт и мы… Ну вы поняли 🙂

Если же вы не понимаете откуда вообще берется вся это сложность с датами крайне рекомендую к просмотру доклад Пару календарей назад я был совсем другим, Алексей Охрименко.
👍10
Новое хобби))

#m5stack
Live stream started
Расскажу про #m5stack и вообще эту тему с микроконтроллерами
🔥3
Live stream finished (19 minutes)
Forwarded from Сергей Мелюков (Сергей Мелюков)
HolyJS 2022 - Jest.pdf
6.8 MB
🔥3
C flatMap так удобно иммутабельно массивы изменять, довольно кратко можно описать удаление / добавление элементов в любом месте.

Сейчас разрабатывается примитивный атом для работы с массивом и я не могу решить какие методы туда включить. С одной стороны, с flatMap и [added, …state] / […state, added] можно просто решить любую задачу. С другой стороны это все равно код который нужно писать и биндить, и может для частых кейсов нужно иметь готовые методы? Но что есть частые кейсы, как их выделить?
Если есть мысли - поделитесь в комментариях в issue.
👍5🔥2🤔2
bun.sh

А вы уже слышали про новый рантайм для джаваскрипта? Что бы просто распарсить и выполнить валидный 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, но вот энтузиазм и темп разработки действительно впечатляет.
👍5
Пятница, проблемы белых людей)
🔥1💩1
Программирование на Rust (весна 2019)

Если хотите вникнуть во что-то новое и расширить рамки сознания - изучение специализированного языка программирование это то что надо.

Rust позиционируется как ЯП общего назначения и хотя ясно что он лучше подходит для чего-то низкоуровнего, но в микроконтроллерном мире он не сильно прижился, а вот веб фреймворки на нем есть. Удивительная штука.

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

В понедельник в 15:00(по мск) мы поговорим с @sergeysova о том какие паттерны из раст можно позаимствовать и использовать в разработке на JS / TS.
🔥11👍2🤔1
Live stream scheduled for