Возврат к истокам

18 сентября 2023
Возврат к истокам

Принимать непопулярные решения сложно. Но это не помешало Дэвиду Хейнемейеру Ханссону заявить, что он с удовольствием откажется от TypeScript в будущем релизе Turbo 8. Вместе с причинами этого поступка мы расскажем о втором превью Ruby 3.3.0 и узнаем о том, что такое I.D.E.A.L. по версии Злых Марсиан.

DHH: TypeScript мне только мешает

Два года назад, в первый день Ruby Russia’21, DHH громко заявил о новом стеке технологий Hotwire (Turbo 7 + Stimulus 3). Об этом мы писали в одном из наших дайджестов. Забавно совпало — снова громкое заявление накануне Ruby Russia’23. Теперь DHH заявил, что в следующем мажорном обновлении Turbo 8 будет убрана поддержка TypeScript. Это вызвало бурные обсуждения в сообществе, так что мы решили узнать причину такого решения.

Холивар вокруг статической и динамической типизации продолжается уже много лет. Идея наполнить JS явными типами и иметь возможность проверять их компилятором нравится многим программистам, но не DHH. Для него необходимость использования компилятора и «загрязнение кода» указанием типов никак не добавило радости процессу разработки, скорее наоборот. Лёгкие вещи стали сложнее, а трудные превратились в мучение. Так что решение выпилить TS из Turbo 8 стало очевидным способом облегчить себе жизнь и одновременно сделать код чище.

Важно понимать, что у разработчиков никто не отбирает возможность писать на TS или включать библиотеки, которые используют TS. Но, по мнению DHH, в конечном итоге запуск кода в браузере будет означать запуск JS. А значит наиболее правильным будет использовать те «плюшки», которые даёт динамическая типизация. Своего рода возвращение к истоками, ведь JS изначально был свободен от статической типизации. Возвращение к этой свободе будет для Turbo 8 лучшим выбором (по мнению Дэвида). 

Митапы

Онлайн

Ruby Russia

30 сентября 2023

Один день, 14 новейших докладов, запись в высоком разрешении — всё это RubyRussia’23. Мы соберём рубистов со всей России и ближнего зарубежья, чтобы с ведущими разработчиками обсудить будущее нашего любимого языка и всего, что построено вокруг него.

Онлайн-конференция — одновременно шоу для коллег-разработчиков и площадка для обсуждений. Присоединяйтесь к нашей трансляции: вас ждут ёмкие 20-минутные доклады, общение с коллегами по стеку и развлечения от наших партнёров.

Регистрация

Второе превью Ruby 3.3.0

Мы уже упоминали выход первого превью Ruby 3.3.0 и дебют RJIT. Из подробностей можно отметить, что пока будет поддерживаться только архитектура x86-64 на Unix. Разумеется, пока что RJIT лишь экспериментальная функция и годится лишь для тестовых целей.

Ещё одно интересное предложение поступило относительно парсинг-генератора. В данный момент Ruby полагается на Bison, и это вызывало некоторые проблемы с совместимостью. Kaneko Yuichiro предложил заменить Bison на Lrama LALR. Этот парсинг-генератор создан на чистом Ruby и более устойчив к ошибкам. Matz согласился с предложением и отметил, что это поможет решить проблемы совместимости в будущих версиях.

Большая часть изменений коснётся YJIT. Помимо улучшенной поддержки аргументов splat и rest, было внесено множество доработок для увеличения производительности. Удалось даже разогнать знаменитый эмулятор optcarrot более чем в 3 раза. Метаданные для скомпилированного кода теперь занимают меньше памяти, а приложения для архитектуры ARM64 получаются компактнее. Помимо этого появилась интересная фича, позволяющая поставить YJIT на паузу. Это можно использовать, чтобы включать YJIT в работу только после запуска приложения.

I.D.E.A.L. от Злых Марсиан

Наши инопланетные «коллеги по цеху» на днях выпустили отличный сборник best practices по использованию HTTP-клиентов. Шутливое название I.D.E.A.L. поневоле ассоциируется с боевой системой V.A.T.S. (Vault-Tec Assisted Targeting System) из Fallout 3. Здесь же аббревиатура представляет собой набор принципов:

  • I — Investing in stability (mandatory)
  • D — Debugging uncertainties (mandatory)
  • E — Exploring the client (mandatory)
  • A — Advancing with abstractions (opinionated)
  • L — Laying out a sound structure (opinionated)

HTTP-соединения по своей природе нестабильны: пакеты теряются, а сервисы могут вести себя непредсказуемо. Для достижения первого принципа инвестирования в стабильность потребуется чётко определить рамки, при выходе за которые пора поднимать тревогу. Грамотно настроенные таймауты соединения не позволят вашим сервисам зависать на неопределённое время. К этому же принципу стоит отнести настройку повторных попыток подключения.

В мире нет ни одного программиста, которому не приходилось сталкиваться с отладкой неопределённого поведения приложения. Здесь для соблюдения принципа Debugging uncertainties имеет смысл вести журнал внешних запросов. Поначалу он может показаться дополнительной бесполезной рутиной, но это впечатление обманчиво. Когда вы столкнётесь с неопределенным поведением, этот журнал станет вашим козырем в рукаве. Вести такой журнал можно как собственными силами, так и с помощью готового решения, например, Yabeda.

Почитать про остальные принципы можно в оригинальной статье Evil Martians.

Вакансии

Удаленка / Офис

Evrone 

Мы открыты для новых Ruby-разработчиков. В Evrone можно работать удалённо с первого дня, мы поддерживаем и оплачиваем участие в Open-source проектах и выступления на конференциях, а расти в грейдах можно с помощью честной системы проверки навыков и менторства.

Подробнее

Подписаться
на Digest →
Важные новости и мероприятия без спама
Технологии которыми вы владеете и которые вам интересны
Ваш адрес электронной почты в безопасности - вот наша политика конфиденциальности.