Do you have a passion for crafting fast software, or squeezing out every last bit of performance that hardware can afford? Are you energized by competition in industry to deliver the best product possible? Are you undaunted by challenges that others claim to be impossible only because they failed at it? Do you have an itch to mix your creativity with your engineering and logic skills to solve difficult problems and deliver innovative features? If so, this role may be for you.
In the JavaScriptCore team at Apple, we work on a world class virtual machine which delivers bleeding edge performance in JavaScript and WebAssembly. We’re looking for a seasoned virtual machine compiler engineer to join us in our mission to make the web even faster. You’ll get to work with smart and passionate people who will challenge you to be the best engineer you can be. And last but not least, you’ll get to work on products that delight and inspire millions of Apple customers every single day, including your friends and family.
The WebKit JavaScript Virtual Machine is responsible for executing JavaScript and WebAssembly code found in web pages. It uses type inference, dynamic compilation, and sophisticated compilation optimizations to turn JavaScript programs into efficient machine code on X86 and ARM. JavaScript Virtual Machine engineers work on all aspects of the compilation pipeline, including the parser and lexical analysis, the profile-guided type inference, and the optimizing compiler backend. They also own and maintain the language runtime, the garbage collector, and the JavaScriptCore API for native apps.
As a JavaScript Virtual Machine Engineer you will work as a generalist in these areas, diagnosing and fixing performance, stability, standards compliance, and compatibility issues, implementing new language features, and supporting browser and non-browser JavaScript clients.
MS in Computer Science or equivalent5+ years of relevant experienceDetailed knowledge of C and C++Excellent debugging, critical thinking, and communication skillsDetailed understanding of data structures and algorithmsExperience with compilers, parsers, and interpretersExperience with assembly-level programmingExperience with performance analysis