- Type
- Full-time
- Education
- Master
- Source
- Eightfold
Description
## Join our Team
About this opportunity:
Intermediate data structures can create significant overhead when they are produced only to be immediately consumed. For example, Erlang code may construct a complete list only to convert it into a binary, even though the intermediate list is never observed.
This master’s thesis will investigate whether the BEAM compiler and runtime can recognize such cases and avoid allocating the intermediate term. The project will develop a general optimization mechanism rather than relying on hand-written fused operations for individual function combinations.
The work combines compiler analysis, runtime implementation, and empirical evaluation. It is suitable for a student interested in compilers, programming-language implementation, and language runtimes. Both positive and negative experimental results are valuable outcomes of the project.
What you will do:
\- Design and implement a new BEAM instruction for consuming intermediate terms without fully materializing them.
\- Add a compiler pass to the BEAM SSA pipeline that identifies suitable producer–consumer patterns.
\- Build on existing alias and sharing analyses, as well as the compiler’s destructive-update optimization.
\- Compile the Erlang/OTP codebase with the optimization enabled and measure how often it applies and which patterns it targets.
\- Extend the compiler test suite to verify that the transformation is safe and correct.
\- Implement the runtime mechanism in the BEAM interpreter to reclaim intermediate heap space while it is being consumed.
\- Evaluate the performance and memory impact of the optimization.
The skills you bring:
\- You are currently pursuing your Masters Degree within Computer Science or similar field with an interest in compilers, programming languages, operating systems, or runtime systems
\- An interest in compilers, programming-language implementation, or language runtimes.
\- Programming experience and willingness to work with Erlang and C.
\- An ability to understand and modify an existing compiler and runtime system.
\- Interest in program analysis, memory management, and performance evaluation.
\- Familiarity with SSA-based optimization or garbage collection is helpful, but not required.
\- Careful attention to correctness, testing, and experimental methodology.
Why join Ericsson?At Ericsson, you´ll have an outstanding opportunity. The chance to use your skills and imagination to push the boundaries of what´s possible. To build solutions never seen before to some of the world’s toughest problems. You´ll be challenged, but you won’t be alone. You´ll be joining a team of diverse innovators, all driven to go beyond the status quo to craft what comes next.
What happens once you apply?Click Here to find all you need to know about what our typical hiring process looks like.Encouraging a diverse and inclusive organization is core to our values at Ericsson, that's why we champion it in everything we do. We truly believe that by collaborating with people with different experiences we drive innovation, which is essential for our future growth. We encourage people from all backgrounds to apply and realize their full potential as part of our Ericsson team. Ericsson is proud to be an Equal Opportunity Employer. learn more.
Primary country and city: Sweden (SE) || Stockholm
Req ID: 792242