Механизм выполнения кода нового поколения уже запущен!

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

Наряду с этим новым выпуском мы также выпускаем ряд обновлений, которые поставляются с новым движком.

Новые языки

Теперь мы поддерживаем PowerShell, Fortran, Julia и NASM! Эти языки в бета-версии, и на момент публикации пока нет доступных / многих ката. Если у вас есть опыт работы с любым из них, сообщество может использовать вашу помощь в переводе существующего контента - что, оказывается, довольно хороший способ заработать некоторую награду в этом процессе.

Новые языковые версии

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

  • Рубиновый МРТ 2.5
  • Haskell GHC 8.2
  • Твердость 0.4.19
  • Ржавчина 1.25
  • Swift 4
  • Эликсир 1.6.4
  • Кристалл 0,24

Примечание о новых версиях со старыми ката. Любые существующие ката, совместимые как есть с новыми версиями, уже были обновлены с использованием этих версий по умолчанию.

Улучшения

  • Python: Улучшенный фреймворк V2 - Пример кумитэ
  • Python: вывод Unicode
  • Python: больше не используется конкатенация для объединения предварительно загруженного кода решения и фикстуры. Это означает, что теперь вы будете получать логичные сообщения об ошибках!
  • TypeScript: /// <reference больше не требуется
  • Инфраструктура: больше вычислительных ресурсов каждому :)

Исправление ошибок

  • Правильная поддержка C ++ 14
  • numpy на Python 3.6

Устаревшие

  • Узел 0.10.33

Фон

Мы (и под нами, мы подразумеваем kazk) уже некоторое время работаем над этим обновлением. Это была огромная работа.

Версия раннера 1-го поколения была построена около 5 лет назад. Он вообще не использовал Docker (Docker был на ранней стадии бета-тестирования) и представлял собой песочницу вокруг Node и Ruby, которую можно было взломать. В конце концов мы выпустили наш Code Runner 2-го поколения, который использовал Docker и интерфейс командной строки с открытым исходным кодом. Он выполнил свою работу, и благодаря многим участникам мы смогли расширить наши языковые предложения. Однако производительность была нестабильной, и ее было очень трудно поддерживать. Многие языковые версии Codewars были заморожены для обновления из-за сложности наших образов Docker. Когда мы добавляли языки, наши серверы исчерпывали свои ресурсы. Попытка управлять тем, какой контент использует, какая версия библиотек вышла из-под контроля.

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

Codewars хотели бы поблагодарить не только Казка (который официально присоединился к команде Codewars!), Но и donaldsebleung за вклад в реализацию Fortran, Bubbler за вклад в новую структуру Python CW V2 и PowerSchill за его первоначальный вклад к реализации PowerShell.

Новый раннер уже запущен в Codewars и вскоре будет запущен для клиентов Qualified.io. Мы очень рады тому, что нас ждет с этим новым двигателем, мы только прикоснулись к нему. Следите за обновлениями!

Подробнее о последних добавлениях читайте на GitHub.

Еще одна вещь ... Предупреждение о дублировании Ката.

Не имеющий отношения к новому исполнителю кода, нам нужно объявить еще одно обновление. Теперь в редакторе ката мы представляем список возможных повторяющихся ката, основанный на названии редактируемого ката. Показанные ката на самом деле могут не быть дубликатами, но если какие-либо из них кажутся похожими, авторы ката (сенсей) должны сначала проверить их, чтобы убедиться, что они создают что-то уникальное.