Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maximecb/9f20974851d43f9bddf9caf41378272f to your computer and use it in GitHub Desktop.
Save maximecb/9f20974851d43f9bddf9caf41378272f to your computer and use it in GitHub Desktop.

Staff Compiler Engineer (Rust YJIT)

The Ruby and Rails Infrastructure Team is responsible to ensure that Shopify uses Ruby and Rails the right way, and that they both work well for Shopify. We work closely with the open-source community and with teams within Shopify to understand common problems in Shopify’s Ruby applications, fix them at the language or framework level, standardize the solution for all other Shopify repos, and contribute our solutions back upstream for the broader community to use. We work in almost all layers, all the way from fixing business logic to operating system debugging.

Ruby and Rails are crucial pieces of our infrastructure. These tools sometimes don’t scale to our needs and we are working to improve them with the help of the community, making things better both internally and externally.

The YJIT project is one of those efforts, developing a new JIT compiler for the Ruby programming language. The project is based on a technique called Lazy Basic Block Versioning that was developed by the technical lead of the project, Maxime Chevalier-Boisvert, during her PhD. Aligned with the mandate of the Ruby and Rails Infrastructure team to improve performance for Rails applications, YJIT is able to run Rails workloads, as well as other kinds of Ruby applications up to 30% faster.

Initial implementation of YJIT was recently upstreamed and released as part of the Ruby 3.1 release. The team has recently ported the YJIT codebase to Rust. Building on this Rust codebase, we are now in the process of improving the compiler with an aim to support more platforms and work out of the box in the Ruby 3.2 release.

We are looking to hire a specialist with experience in systems programming to participate in the development and continued improvement of this new compiler. The successful candidate will join Maxime Chevalier-Boisvert, Aaron Patterson, Alan Wu, Noah Gibbs and Kevin Newton to deliver a world-class JIT compiler for the Ruby community.

You should have:

  • An undergraduate or masters degree in computer science, software engineering or equivalent
  • 5+ years of experience working as a developer
  • Effective communication skills
  • Experience writing code in a systems language such as Rust or C/C++
  • Understanding of the working principles of bytecode interpreters

The ideal candidate would also check some of these boxes:

  • Be interested in and have experience working on compiler development
  • Be familiar or comfortable with machine code
  • Have experience with the Ruby programming language
  • Be familiar with the internals of the CRuby codebase
  • Have experience contributing to open source software

If you don't check a lot of those boxes but you LOVE Ruby and Ruby on Rails, please apply anyway and let's chat!

You'll primarily be working on:

  • The Rust YJIT codebase that integrates with CRuby
  • Implementing a new backend for the YJIT compiler that is able to target both x86-64 and ARM processors.
  • Benchmarking the existing implementations, finding bottlenecks and implementing optimizations.
  • Building a mechanism for YJIT to use less memory by developing and implementing techniques for code garbage collection.
  • Collaborating with other Shopify developers to understand their needs and ensure our team works on the right things.

Perks:

  • Fully remote job. We are able to hire from almost anywhere in North-America and Europe
  • Competitive salary and stock grant
  • Great health insurance
  • Flexible work schedule
  • Respect of work/life balance

How to apply

Reach out with an email describing why you would be the ideal candidate (and, preferably, an attached CV) to: maxime.chevalierboisvert@shopify.com.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment