Посмотрела доклад Коичи Сасада про ракторы.
Не так много нового про сами ракторы, зато дал хороший "рефрешер" о проблемах параллелизма :
Чем отличается параллельное выполнение от конкурентного?
- одновременное выполнение vs переключение между несколькими задачами
GVL/GIL в Ruby:
- ограничивает одновременное выполнение потоков, за счёт этого избавляет от многих проблем параллелизма
- иногда параллельное выполнение возможно, если один из потоков выполняет I/O операцию
Что за ракторы и зачем они?
- Руби-акторы
- появились в Ruby 3.0 (2020)
- для параллельного выполнения кода
- у каждого рактора есть свой GVL: потоки внутри одного рактора будут работать в основном конкурентно, а не параллельно.
А вот потоки внутри разных ракторов могут выполняться параллельно.
Почему нельзя просто взять и выполнять Руби-потоки параллельно?
(с точки зрения разработчиков языка)
- у потоков, запущенных в рамках одного процесса, общее пространство памяти, нужно следить за shared mutable objects, а это сложно
- в руби много shared mutable стейта + основные структуры типа строк и массивов не потокобезопасные
Есть мнение из 1995 года, что нужно вообще запретить параллельное выполнение потоков, т.к слишком сложно следить "вручную" (смотрите картинку :)
Какие есть варианты избавиться от сложности?
- запретить мутабельные объекты (elixir/erlang)
- отслеживать с помощью типов (Rust)
- ограничить mutations (clojure)
- отслеживать мутации и лочить внешними средствами (clang, helgrid/valgrind)
- запретить шарить объекты, форкать процессы (shell, druby)
- отделить shareable и не shareable объекты - Ракторы!
Что относительно нового:
- M:N планировщик тредов, появился в Ruby 3.3.0
M руби-тредов теперь "мапятся" на N тредов ОС, (N = количество ядер, M > N)
Описание в трекере
По умолчанию M:N планировщик в главном ракторе выключен, тогда всё работает, как обычно: 1 рубишный поток соответствует одному потоку ОС.
В ракторах всё так же много проблем:
- мало поддерживающих их библиотек
- вообще мало что можно запустить, но вот на простых расчётах типа фибоначчи можно проверить
- есть особенности с производительностью, иногда код работает ещё медленнее, чем без ракторов
Интересно, дойдёт ли когда-нибудь до production-ready 🤔
Но надо понимать, что мы всегда в ракторе - посмотрите
Можно глянуть планы и обширный список проблем с ракторами в трекере
#ruby@anna_codes
Не так много нового про сами ракторы, зато дал хороший "рефрешер" о проблемах параллелизма :
Чем отличается параллельное выполнение от конкурентного?
- одновременное выполнение vs переключение между несколькими задачами
GVL/GIL в Ruby:
- ограничивает одновременное выполнение потоков, за счёт этого избавляет от многих проблем параллелизма
- иногда параллельное выполнение возможно, если один из потоков выполняет I/O операцию
Что за ракторы и зачем они?
- Руби-акторы
- появились в Ruby 3.0 (2020)
- для параллельного выполнения кода
- у каждого рактора есть свой GVL: потоки внутри одного рактора будут работать в основном конкурентно, а не параллельно.
А вот потоки внутри разных ракторов могут выполняться параллельно.
Почему нельзя просто взять и выполнять Руби-потоки параллельно?
(с точки зрения разработчиков языка)
- у потоков, запущенных в рамках одного процесса, общее пространство памяти, нужно следить за shared mutable objects, а это сложно
- в руби много shared mutable стейта + основные структуры типа строк и массивов не потокобезопасные
Есть мнение из 1995 года, что нужно вообще запретить параллельное выполнение потоков, т.к слишком сложно следить "вручную" (смотрите картинку :)
Какие есть варианты избавиться от сложности?
- запретить мутабельные объекты (elixir/erlang)
- отслеживать с помощью типов (Rust)
- ограничить mutations (clojure)
- отслеживать мутации и лочить внешними средствами (clang, helgrid/valgrind)
- запретить шарить объекты, форкать процессы (shell, druby)
- отделить shareable и не shareable объекты - Ракторы!
Что относительно нового:
- M:N планировщик тредов, появился в Ruby 3.3.0
M руби-тредов теперь "мапятся" на N тредов ОС, (N = количество ядер, M > N)
Описание в трекере
По умолчанию M:N планировщик в главном ракторе выключен, тогда всё работает, как обычно: 1 рубишный поток соответствует одному потоку ОС.
В ракторах всё так же много проблем:
- мало поддерживающих их библиотек
- вообще мало что можно запустить, но вот на простых расчётах типа фибоначчи можно проверить
- есть особенности с производительностью, иногда код работает ещё медленнее, чем без ракторов
Интересно, дойдёт ли когда-нибудь до production-ready 🤔
Но надо понимать, что мы всегда в ракторе - посмотрите
Ractor.current.Можно глянуть планы и обширный список проблем с ракторами в трекере
#ruby@anna_codes
👍6❤🔥4🔥4❤3👏1
Вот ещё крутой доклад In-Depth Ruby Concurrency от JPCamara
Рассказывает про распараллеливание с помощью процессов, потоков, файберов и немного ракторов.
Разбирает особенности, плюсы и минусы каждого подхода, даёт конкретные примеры из жизни. Например, app-серверов, к-е используют эти модели.
Посмотрите, если хотите разобраться или вспомнить.
Рассказывает про распараллеливание с помощью процессов, потоков, файберов и немного ракторов.
Разбирает особенности, плюсы и минусы каждого подхода, даёт конкретные примеры из жизни. Например, app-серверов, к-е используют эти модели.
Посмотрите, если хотите разобраться или вспомнить.
YouTube
RubyConf 2024 In-Depth Ruby Concurrency: Navigating the Ruby concurrency landscape by JP Camara
When do I use a Process, or a Thread, or a Fiber? And Why? Can I use Ractors yet? What is the FiberScheduler? The M:N Thread scheduler? What's a Reactor? Do I fork, prefork, or refork? Should I care?
Do I scale up my Threads? My Fibers? My Processes? Do…
Do I scale up my Threads? My Fibers? My Processes? Do…
👍14❤3
Привет!
Давно не стримили. Теперь давайте про Ruby.
Обсудим, куда идёт Ruby, а куда рельсы:
- что нового обещают в руби
- идеи dhh, one-person framework
- рельсовый фронтенд
- ИИ + руби
- is ruby dead
- куда перекатываться, если что 😁
Буду с подругами: мы с Катей рубистки, Олеся разрабатывает платформу для интерактивных курсов по музыке с бэкендом на Ruby on Rails.
В воскресенье 27 апреля, в 16:00
Заходите послушать и поговорить. После - афтепати на свободную тему ✨
#стрим@anna_codes #ruby@anna_codes
Давно не стримили. Теперь давайте про Ruby.
Обсудим, куда идёт Ruby, а куда рельсы:
- что нового обещают в руби
- идеи dhh, one-person framework
- рельсовый фронтенд
- ИИ + руби
- is ruby dead
- куда перекатываться, если что 😁
Буду с подругами: мы с Катей рубистки, Олеся разрабатывает платформу для интерактивных курсов по музыке с бэкендом на Ruby on Rails.
В воскресенье 27 апреля, в 16:00
Заходите послушать и поговорить. После - афтепати на свободную тему ✨
#стрим@anna_codes #ruby@anna_codes
🔥14❤🔥8❤3👍3
Статья для подготовки к стриму "Rails: when "nothing changed" is the best feature"😏
Порадовала цитата про падающий нокогири:
И коммент от Матца. Завтра обсудим )
#ruby #rails
Порадовала цитата про падающий нокогири:
Recently I had to implement a tiny backend app. I dusted off Rails and everything was the same. Same commands, same gems, even nokogiri crashed the same way during bundle install, just like 10 years ago…
И коммент от Матца. Завтра обсудим )
#ruby #rails
❤8❤🔥1👍1
Пост для комментариев к стриму + примерные темы:
- что с Ruby
Ruby Kaigi 2025
- ruby 4.0
- programming language for AI age
Final keynote Rubykaigi 2024 (talk)
презентация
- performance (yjit, парсер, паралеллизм, memory opts, tooling)
- static typing :D
- руби 4-0 - изолированные пространства имён
Руби-компании
- Rails
- rails 8
- solid trifecta
- sqlite для прода
- серверофобия и линукс, камал
- one-person framework
- рельсовый фронтенд
- ?? Rails: when "nothing changed" is the best feature
- rails 7.2
- что с ии + руби
- что используете
- что у нас на рынке труда
- куда перекатываться, если что )
- что с Ruby
Ruby Kaigi 2025
- ruby 4.0
- programming language for AI age
Final keynote Rubykaigi 2024 (talk)
презентация
- performance (yjit, парсер, паралеллизм, memory opts, tooling)
- static typing :D
- руби 4-0 - изолированные пространства имён
Руби-компании
- Rails
- rails 8
- solid trifecta
- sqlite для прода
- серверофобия и линукс, камал
- one-person framework
- рельсовый фронтенд
- ?? Rails: when "nothing changed" is the best feature
- rails 7.2
- что с ии + руби
- что используете
- что у нас на рынке труда
- куда перекатываться, если что )
❤8😱1
Анна Буянова (Anna Codes) pinned «Пост для комментариев к стриму + примерные темы: - что с Ruby Ruby Kaigi 2025 - ruby 4.0 - programming language for AI age Final keynote Rubykaigi 2024 (talk) презентация - performance (yjit, парсер, паралеллизм, memory opts, tooling)…»
Спасибо, что пришли на стрим и афтепати! Было интересно ✨
❤🔥7👍1😱1
Привет!
Пока готовилась к стриму, узнала, что в апреле была RubyKaigi и там было много интересного.
Например, Matz всё-таки анонсировал Ruby 4.0 в этом году.
На всякий случай сделал это 1 апреля, чтобы если что, сказать, что шутка ))
Ещё рассказывал про Ruby и AI
Из того, что обещал в прошлом году:
Изолированные пространства имён , презентация
Бинарники из руби - на уровне игрушки, но и Матц упоминал в виде "мечты"
Мне показалось, много низкоуровневого, но может на РубиКайги всегда так. Кто был? )
Пока записей докладов нет, но можно посмотреть тенденции и некоторые презентации:
Типизация
rbs via tests
steep
sorbet
JIT
YJIT , презентация
ZJIT
IoT/микроконтроллеры
mruby/c and data-flow programming for small devices
MicroRuby
PicoRuby
Ракторы/GC
Toward Ractor local GC
Оптимизация Ruby
JRuby
Low-level Ruby Observability APIs
Ускорение Class#new
Расписание
Есть что-нибудь интересное? Keynote от Матца точно надо будет глянуть ✨
#ruby@anna_codes
Пока готовилась к стриму, узнала, что в апреле была RubyKaigi и там было много интересного.
Например, Matz всё-таки анонсировал Ruby 4.0 в этом году.
На всякий случай сделал это 1 апреля, чтобы если что, сказать, что шутка ))
Ещё рассказывал про Ruby и AI
Из того, что обещал в прошлом году:
Изолированные пространства имён , презентация
Бинарники из руби - на уровне игрушки, но и Матц упоминал в виде "мечты"
Мне показалось, много низкоуровневого, но может на РубиКайги всегда так. Кто был? )
Пока записей докладов нет, но можно посмотреть тенденции и некоторые презентации:
Типизация
rbs via tests
steep
sorbet
JIT
YJIT , презентация
ZJIT
IoT/микроконтроллеры
mruby/c and data-flow programming for small devices
MicroRuby
PicoRuby
Ракторы/GC
Toward Ractor local GC
Оптимизация Ruby
JRuby
Low-level Ruby Observability APIs
Ускорение Class#new
Расписание
Есть что-нибудь интересное? Keynote от Матца точно надо будет глянуть ✨
#ruby@anna_codes
❤11👍5🔥5⚡1
Интересный доклад от Ирины Назаровой, СЕО Evil Martians.
Она считает, что рельсы находятся на пути к "плато продуктивности" после относительного упадка (см. график)
Рассказывает, почему новые стартапы выбирают руби и рельсы. Точнее сами основатели рассказывают.
Всё как мы любим - продуктивность, developer experience, близость к бизнесу.
Также уделила время ai-инструметам для руби и рельсовому фронтенду (hotwire, rubyui, инерции)
Ещё понравился интерактив с poll everywhere, тоже рубишным. Надо попробовать )
Выбрали бы рельсы для своего нового стартапа? 😏
#ruby@anna_codes
Она считает, что рельсы находятся на пути к "плато продуктивности" после относительного упадка (см. график)
Рассказывает, почему новые стартапы выбирают руби и рельсы. Точнее сами основатели рассказывают.
Всё как мы любим - продуктивность, developer experience, близость к бизнесу.
Также уделила время ai-инструметам для руби и рельсовому фронтенду (hotwire, rubyui, инерции)
Ещё понравился интерактив с poll everywhere, тоже рубишным. Надо попробовать )
Выбрали бы рельсы для своего нового стартапа? 😏
#ruby@anna_codes
👍10💯2❤🔥1
Помните ко мне на стрим приходила Олеся? Она разрабатывает платформу для интерактивных онлайн-курсов по музыке ✨
Теперь можно следить за проектом и узнавать о музыкальном образовании у неё в @enjoythegrind
Теперь можно следить за проектом и узнавать о музыкальном образовании у неё в @enjoythegrind
❤12❤🔥3🔥1
Забыла написать, что это exercism.
Хорошая штука - есть теория и практика, даже немного код-ревью от менторов, но там как повезёт.
Хорошая штука - есть теория и практика, даже немного код-ревью от менторов, но там как повезёт.
🔥8👍5🤔1👀1
В субботу буду у Насти @web_and_more
31 мая в 14.00 по мск, поговорим про доклады и конфы. Заходите 😎
https://news.1rj.ru/str/web_and_more/878
#стрим@anna_codes
31 мая в 14.00 по мск, поговорим про доклады и конфы. Заходите 😎
https://news.1rj.ru/str/web_and_more/878
#стрим@anna_codes
Telegram
Веб (и не только) заметки
31 мая в 14.00 по мск на этом канале пройдёт стрим, посвящённый теме докладов, конференций и нужно ли это всем.
Приглашённые гостьи:
Анна Буянова, Ruby-разработчица, админша сообщества code_sisters, авторка учебного курса по Ruby, владелица канала @anna_codes…
Приглашённые гостьи:
Анна Буянова, Ruby-разработчица, админша сообщества code_sisters, авторка учебного курса по Ruby, владелица канала @anna_codes…
❤5👍2
На самом деле основная мысль другая )
Я посмотрела половинку, не очень удобно на японском. Можно послушать, если вы учите японский или фанатеете от Матца.
А вот краткое содержание keynote от Perplexity:
1. Reverse Alpha Syndrome (Обратный альфа-синдром)
- Альфа-синдром — термин из поведения собак: если хозяин слишком балует питомца, тот начинает считать себя главным.
- Обратный альфа-синдром — аналогия с ИИ: если мы, люди, начинаем делать за ИИ то, что он не может, мы сами становимся "слугами" ИИ, а не наоборот.
- Опасность: если мы будем делать только то, что не может ИИ, а всё остальное отдавать ему, то станем обслуживающим персоналом для машин.
2. Роль ИИ в программировании
- Сейчас ИИ хорошо справляется с повторяющимися задачами, шаблонным кодом (например, генерация кода для Rails-приложений).
- Но ИИ часто ошибается в сложных, нетиповых задачах, не всегда понимает специфику требований.
- Программисты опасаются, что ИИ "отнимет" у них работу, но важно помнить: ИИ — инструмент, а не хозяин.
3. Каким должен быть язык программирования для эпохи ИИ?
- Python — очевидный ответ, но речь не об этом.
- В будущем программирование всё больше будет напоминать общение на естественном языке: мы будем формулировать задачи "по-человечески", а не только писать код.
- Однако, как и в математике, иногда нужен формальный, точный язык для сложных идей — поэтому программные языки не исчезнут.
4. Статическая типизация и ошибки
- Сейчас статическая типизация (как в C, Java) помогает быстрее находить ошибки.
- Но если ИИ станет достаточно умным, возможно, такие ошибки будут автоматически исправляться или предотвращаться.
- Главная ценность языков — не только в типах, но и в удобстве, выразительности, удовольствии от программирования.
5. Критерии идеального языка для ИИ-эры
- Простота — лаконичность, минимум лишнего.
- Выразительность — возможность ясно и коротко выражать сложные идеи.
- Масштабируемость — язык должен подходить и для маленьких скриптов, и для больших промышленных проектов.
- Поддержка DSL (Domain Specific Languages) — возможность создавать "языки внутри языка" для разных задач.
---
Заключение
- Не стоит бояться ИИ, но важно помнить о балансе: не становиться "слугой" машины.
- Выбирайте инструменты, которые делают вашу работу интересной и приятной.
- Ruby создавался ради удовольствия от программирования — и это должно оставаться главным критерием!
#ruby@anna_codes
Я посмотрела половинку, не очень удобно на японском. Можно послушать, если вы учите японский или фанатеете от Матца.
А вот краткое содержание keynote от Perplexity:
1. Reverse Alpha Syndrome (Обратный альфа-синдром)
- Альфа-синдром — термин из поведения собак: если хозяин слишком балует питомца, тот начинает считать себя главным.
- Обратный альфа-синдром — аналогия с ИИ: если мы, люди, начинаем делать за ИИ то, что он не может, мы сами становимся "слугами" ИИ, а не наоборот.
- Опасность: если мы будем делать только то, что не может ИИ, а всё остальное отдавать ему, то станем обслуживающим персоналом для машин.
2. Роль ИИ в программировании
- Сейчас ИИ хорошо справляется с повторяющимися задачами, шаблонным кодом (например, генерация кода для Rails-приложений).
- Но ИИ часто ошибается в сложных, нетиповых задачах, не всегда понимает специфику требований.
- Программисты опасаются, что ИИ "отнимет" у них работу, но важно помнить: ИИ — инструмент, а не хозяин.
3. Каким должен быть язык программирования для эпохи ИИ?
- Python — очевидный ответ, но речь не об этом.
- В будущем программирование всё больше будет напоминать общение на естественном языке: мы будем формулировать задачи "по-человечески", а не только писать код.
- Однако, как и в математике, иногда нужен формальный, точный язык для сложных идей — поэтому программные языки не исчезнут.
4. Статическая типизация и ошибки
- Сейчас статическая типизация (как в C, Java) помогает быстрее находить ошибки.
- Но если ИИ станет достаточно умным, возможно, такие ошибки будут автоматически исправляться или предотвращаться.
- Главная ценность языков — не только в типах, но и в удобстве, выразительности, удовольствии от программирования.
5. Критерии идеального языка для ИИ-эры
- Простота — лаконичность, минимум лишнего.
- Выразительность — возможность ясно и коротко выражать сложные идеи.
- Масштабируемость — язык должен подходить и для маленьких скриптов, и для больших промышленных проектов.
- Поддержка DSL (Domain Specific Languages) — возможность создавать "языки внутри языка" для разных задач.
---
Заключение
- Не стоит бояться ИИ, но важно помнить о балансе: не становиться "слугой" машины.
- Выбирайте инструменты, которые делают вашу работу интересной и приятной.
- Ruby создавался ради удовольствия от программирования — и это должно оставаться главным критерием!
#ruby@anna_codes
👍12❤7