Напиши текст вакансии для должности "С-разработчик (команда Tarantool Language Runtime)". Название компании: "VK". Расположение: Москва. График работы: Полный день. Опыт работы: От 3 до 6 лет. Ключевые навыки: 'Linux', 'Lua', 'Assembler', 'C'

Tarantool — платформа, которая объединяет в себе свойства хорошей распределенной базы данных и возможности написания кода на различных языках программирования рядом с ней. Ключевыми особенностями нашего продукта являются скорость, надежность и масштабируемость, что в свою очередь требует выбора эффективных алгоритмов и структур данных, грамотного использования возможностей операционной системы и компилятора, написания чистого понятного кода. Наш продукт сильно растет, и мы ищем С разработчика в команду Language Runtime, который будет вместе с нами продолжать работать над расширением возможностей сред исполнения Lua и SQL. Задачи для нового коллеги: Нам нужен инженер, который будет заниматься развитием нашей программной среды в Tarantool. Lua — основной язык программирования для написания кода на Tarantool. Его runtime — центральная компонента платформы, обеспечивающая взаимодействие различных подсистем. В качестве реализации у нас использован LuaJIT, который включает в себя как среду исполнения языка, так и трассирующий JIT-компилятор. Также мы активно работаем не только над улучшением самой среды исполнения Lua, но и над встроенными модулями, а также сопутствующими инструментами разработчика. Примеры задач, которые мы решали в последнее время:  #1700 Handle fiber switches made on JIT traces: Tarantool использует Lua корутины для исполнения пользовательского кода. Однако в Tarantool использован иной примитив для многозадачности — fiber. Смена fiber является внешней операцией для Lua-мира, и поэтому необходимо уведомлять подсистемы Lua-среды (JIT, GC и т.д.) для сохранения консистентности платформы; #5187 LuaJIT platform metrics: В рамках развития Lua runtime мы добавили возможность получения различных метрик платформы (количество различных аллоцированных объектов, число созданных и использованных строк, характеристики работы JIT-компилятора и т.д.); #5442 LuaJIT memory profiler: Развитие среды разработчика мы начали с профилировщика памяти, который позволяет следить за аллокацией / реаллокацией / освобождением памяти в Lua-среде, а также инструментами для анализа этого профиля.  В ближайшее время мы планируем заниматься такими задачами:  #1898 Detect infinity loops in Lua: В парадигме кооперативной многозадачности, реализованной в Tarantool, средства исполнения Lua-кода (fiber) самостоятельно передают управление друг другу. Таким образом, бесконечные циклы без передачи управления в своем теле могут приводить к деградации всей платформы. Для предотвращения этой проблемы мы хотим реализовать механизм принудительной передачи управления, сохранив при этом консистентность кооперативного взаимодействия fiber; #4001 LuaJIT platform profiler: Имеющиеся средства профилирования не покрывают всех потребностей разработчиков, использующих Tarantool. Системные утилиты (perf) снимают только host stack traces; встроенный профилировщик LuaJIT (jit.p) работает только с Lua guest stack. В реальной жизни необходимо иметь инструмент, покрывающий обе среды и реализующий функциональность обоих профилировщиков; #5857 Inter-fiber debugger for Tarantool: Отладчик является ежедневным инструментом разработчика на разных языках программирования и платформах. Имеющиеся отладчики для Lua не подходят для работы со сложным кодом в Tarantool из-за различных особенностей платформы (многозадачность, асинхронность, неблокируемость), поэтому необходимо разработать отладчик платформы, который позволяет удобно и эффективно вести разработку на Lua в Tarantool.  Требования:  отличное знание языка С; навыки системного программирования под Linux.  Плюсом будет:  опыт работы с языком ассемблера x86 или ARM; опыт работы с языком Lua; уверенные знания технологий компиляторов и виртуальных машин; желание писать код в open source.